<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 情人節(jié)告白特技:隱藏在聊天記錄里的珍貴禮物

          共 4576字,需瀏覽 10分鐘

           ·

          2022-02-17 14:57

          • 明天又雙叒叕是一年一度的戀愛節(jié)了!

          • 又是一波絕好的機會!恩愛秀起來!

          • 購物車清空!禮物送起來!朋友圈曬起來!



          • 等等!什么?!

          • 你還沒準備好禮物么?

          • 但其實你不知道要送啥?

          • 原來又雙叒叕要到

          • 全民不知道送什么禮物的系列日子了…



          • 哎呦 你們這些

          • 磨人的?。╨ao)妖(you)精(tiao)!

          • Python倒是覺得你還可以搶救一下!


          • 說到詞云應該不陌生,不知道的童靴往下看

          • 詞云,就是把網(wǎng)絡文本中出現(xiàn)頻率較高

          • "關(guān)鍵詞"予以視覺上的突出

          • 瀏覽者只要一眼掃過文本就可以領(lǐng)略其主旨 




          • 瞧 這是不是一個有聲音、有畫面的小愛心~

          • 今天 我們采集情侶們之間的聊天日常

          • 用此制作一份只屬于你們的小浪漫!




          一、導出自己和對象的數(shù)據(jù)~



          微信的備份功能并不能直接給你導出文本格式,它導出來其實是一種叫sqlite的數(shù)據(jù)庫。如果說用網(wǎng)上流傳的方法提取文本數(shù)據(jù),iOS則需要下載itunes備份整機,安卓則需要本機的root權(quán)限,無論是哪種都非常麻煩,在這里給大家介紹一種不需要整機備份和本機root權(quán)限,只導出和對象的聊天數(shù)據(jù)的方法。


          那就是使用安卓模擬器導出,這樣既能ios/安卓通用,又能夠避免對本機造成不良影響,首先需要用電腦版的微信備份你和你對象的聊天記錄。以windows系統(tǒng)為例:


          1. 下載夜神模擬器


          2. 在夜神模擬器中下載微信


          3. 使用windows客戶端版的微信進行備份,如圖左下角



          4. 點擊備份聊天記錄至電腦


          5. 手機端選擇備份的對象


          點擊進入下方的選擇聊天記錄,然后選擇和你對象的記錄



          6. 導出完畢后打開模擬器,登錄模擬器的微信



          7. 登錄成功后返回電腦版微信登錄,打開備份與恢復,選擇恢復聊天記錄到手機

          選擇恢復記錄至手機


          8. 勾選我們剛剛導出的聊天記錄,并在手機上點擊開始恢復



          9. 打開夜神模擬器的root權(quán)限



          10.   用模擬器的瀏覽器百度搜索RE文件管理器,下載(圖一)安裝后打開,會彈出對話框讓你給予root權(quán)限,選擇永久給予,打開RE文件管理器(圖二),進入以下文件夾(圖三), 這是應用存放數(shù)據(jù)的地方。
          /data/data/com.tencent.mm/MicroMsg


          圖一


          圖二


          圖三


          然后進入一個由數(shù)字和字母組合而成的文件夾,如上 圖三 的 

          4262333387ddefc95fee35aa68003cc5


          11. 找到該文件夾下的EnMicroMsg.db文件,將其復制到夜神模擬器的共享文件夾(圖四)。
          共享文件夾的位置為 /mnt/shell/emulated/0/others ( 圖五 )。
          現(xiàn)在訪問windows的 C:\Users\你的用戶名\Nox_share\OtherShare 獲取該數(shù)據(jù)庫文件( EnMicroMsg.db )。


          圖四


          圖五


          12. 導出該數(shù)據(jù)庫后,使用一款叫 sqlcipher 的軟件讀取數(shù)據(jù)
          (鏈接:
          https://pan.baidu.com/s/1Im3n02yseo-4IxeDY9srqQ 提取碼: ka4z)


          在這之前,我們還需要知道該數(shù)據(jù)庫的密碼,根據(jù)前人的經(jīng)驗,該密碼的公式如下

          字符串 IMEI (手機序列號) UIN(用戶信息號)

          將該字符串進行MD5計算后的前七位便是該數(shù)據(jù)庫的密碼

          如 "355757010761231 857456862" 實際上中間沒有空格,然后放入MD5計算取前面七位數(shù)字,后續(xù)會詳細介紹


          哇,真是“簡單易懂”啊,沒關(guān)系,接下來告訴大家IMEI和UIN怎么獲得。


          首先是IMEI,在模擬器右上角的系統(tǒng)設(shè)置 —— 屬性設(shè)置里就可以找得到啦,如圖所示。



          現(xiàn)在我們獲得了IMEI號,那UIN號呢?


          同樣地,用RE文件管理器打開這個文件

          /data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml



          長按改文件,點擊右上角的三個點—選擇打開方式—文本瀏覽器,找到default_uin,后面的數(shù)字就是了 !


          得到這兩串數(shù)字后,就可以開始計算密碼啦,如果我的IMEI是355757010762041,Uin是857749862,那么合起來就是355757010762041857749862,將這串數(shù)字放入免費MD5在線計算:
          https://md5calculator.chromefans.org/?langid=zh-cn

          得到的數(shù)字的前七位就是我們的密碼了,像這一串就是 6782538.

          如果uin是負的話,可以試試uin拼接手機IMEI碼(就是和正的相反,進行拼接),取MD5的32位小寫密文前7個字符。再不行就重裝模擬器。

          然后我們就可以進入我們的核心環(huán)節(jié):使用 sqlcipher 導出聊天文本數(shù)據(jù)!


          sqlcipher


          點擊 File - open database - 選擇我們剛剛的數(shù)據(jù)庫文件,會彈出框框讓你輸入密碼,我們輸入剛剛得到的七位密碼,就可以進入到數(shù)據(jù)庫了,選擇message表格,這就是你與你的對象的聊天記錄!



          我們可以將它導出成csv文件:File - export - table as csv.


          接下來,我們將使用Python代碼,將里面真正的聊天內(nèi)容:content信息提取出來,如下所示。雖然這個軟件也允許select,但是它select后不允許導出,非常不好用,因此還不如我們自己寫一個:



          將該文件命名為extract.py,windows打開CMD / macOS系統(tǒng)打開Terminal  進入到該文件夾下,執(zhí)行命令:


          python extract.py


          記得把生成csv文件的編碼格式轉(zhuǎn)換成utf-8哦,不然可能會運行不下去:


          用記事本打開—文件—另存為—編碼改為UTF-8即可


          當然你還可以用正則表達式去除以下內(nèi)容


          • 微信發(fā)送的數(shù)據(jù):wxid.*

          • 表情:\[.*\]


          不過我覺得這些也是必要的聊天信息之一,留著也無妨,因此在這里就不加入進去啦,有需要的同學可以百度搜索python 正則表達式,學習正則表達式的使用。


          最后得到的文本格式就是一行一句聊天內(nèi)容,處理后我們就準備好進入下一個環(huán)節(jié)了!那就是令人激動的!生成詞云??!



          二、根據(jù)第一步得到的聊天數(shù)據(jù)生成詞云



          1. 導入我們的聊天記錄,并對每一行進行分詞


          聊天記錄是一行一行的句子,我們需要使用分詞工具把這一行行句子分解成由詞語組成的數(shù)組,這時候我們就需要用到結(jié)巴分詞了。


          分詞后我們還需要去除詞語里一些語氣詞、標點符號等等(停用詞),然后還要自定義一些詞典,比如說你們之間恩恩愛愛的話,一般結(jié)巴分詞是無法識別出來的,需要你自行定義,比如說:小傻瓜別感冒了,一般分詞結(jié)果是:


          小/傻瓜/別/感冒/了


          如果你把“小傻瓜”加入到自定義詞典里(我們下面的例子里是mywords.txt),則分詞結(jié)果則會是:


          小傻瓜/別/感冒/了


          下面對我們的聊天記錄進行分詞:



          在這個函數(shù)里,我們使用了codecs打開我們的聊天記錄文件,然后進行結(jié)巴分詞,最終返回一個包含所有詞語的數(shù)組。記得運行前要安裝jieba分詞包,默認你已經(jīng)安裝了python3,如果沒有請查閱這個文檔:

          https://www.liaoxuefeng.com/wiki/1016959663602400/1016959856222624


          windows打開CMD / macOS系統(tǒng)打開Terminal 輸入:


          pip install jieba


          安裝完成后,在編輯器中輸入我們剛剛的python代碼,我將其命名為segment.py,切記在同個目錄下放置 聊天記錄.txt 及 自定義詞表 mywords.txt, 然后在CMD/Terminal中輸入命令運行:


          python segment.py


          你就可以看見你們的聊天記錄分詞后的效果啦


          2. 計算分詞后的詞語對應的頻數(shù)


          為了方便計算,我們需要引入一個叫pandas的包,然后為了計算每個詞的個數(shù),我們還要引入一個叫numpy的包,cmd/terminal中輸入以下命令安裝pandas和numpy:


          pip install pandas==0.25.1
          pip install numpy


          詳細的解析我都寫在下方的注釋里啦,大家可以自行閱讀并實踐。不過需要注意的是,里面的load_file_segment()是我們第一步里的函數(shù),如果你不知道如何把這兩個步驟合在一起,沒關(guān)系,最后我們會提供一份完整的代碼.



          同第一步一樣,運行這份代碼你就可以看到每個詞語及其對應的頻數(shù)。需要注意的是,這里有個加載停用詞的操作,你需要把停用詞表放在當前文件夾下,這里提供一份停用詞表下載

          stopwords.txt: https://pythondict.com/wp-content/uploads/2019/08/2019080607572893.txt



          三、生成詞云



          終于到了最后一部分啦!你是不是開心而又滿懷激動的心情呢(滑稽,在這一步開始之前,我們需要先安裝需要使用的包,我們需要用到的包有:


          pip install matplot
          pip install scipy==1.2.1
          pip install wordcloud


          打開CMD/Terminal 輸入以上命令即可安裝,加上之前兩個步驟的包,有:


          pip install jieba
          pip install codecs
          pip install pandas==0.25.1
          pip install numpy


          如果你在安裝這些包的時候出現(xiàn)了什么問題,請記得在我們下方評論區(qū)提出,我們會一一解答的哦。


          運行目錄的文件結(jié)構(gòu)如下:


          • 聊天記錄.txt

          • mywords.txt(如果你沒有自定義的詞的話可以為空)

          • stopwords.txt

          • wordCloud.py

          • semhei.tff

          • ai.jpg (可以為任意的圖片,你喜歡就行)


          完整代碼,wordCloud.py 如下,附有詳細的解析:



          值得注意的是這里面的bimg和wordcloud對象的生成,我們知道png格式背景一般是透明的,因此如果你的圖像是png格式的話,其生成詞云的時候背景色應該設(shè)為None,然后mode應該設(shè)為RGBA。


          我們還可以控制詞云字體的大小和數(shù)目的多少,使用下面這兩個參數(shù):


          max_font_size=60, max_words=3000


          調(diào)用方式如下所示:


          wordcloud = WordCloud(background_color='white', mask=bimg, max_font_size=x, max_words=y, font_path='simhei.ttf')


          運行前,確保安裝了所有的包,并且當前目錄下有我們所需要的所有文件哦


          下面就可以用我們的聊天記錄,畫心型詞云啦?。。。?/span>


          CMD/Terminal 進入代碼所在文件夾,運行:python wordcloud.py


          得到的圖像如下:



          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  热99视频在线观看 | 国产小电影在线观看 | 久久久亚洲AV无码日韩精品 | 苍进空一区二区三区 | 亚洲免费观看A∨中文 |