日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[NLP] 中文文本相似度实战

發(fā)布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [NLP] 中文文本相似度实战 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文: https://blog.csdn.net/github_36326955/article/details/54891204

1. 計算文本相似度的常用算法

(1) 基于詞向量: 余弦相似度, 曼哈頓距離, 歐幾里得距離, 明式距離(是前兩種距離測度的推廣)
(2) 基于字符: 編輯距離, simhash(適用于海量數(shù)據(jù)), 共有字符數(shù)(有點(diǎn)類似 onehot 編碼, 直接統(tǒng)計兩個文本的共有字符數(shù), 最naive)
(3) 基于概率統(tǒng)計: 杰卡德相似系數(shù)
(4) 基于詞嵌入模型: word2vec/doc2vec

2. TF-IDF簡介

TF-IDF = term frequency–inverse document frequency = 詞頻-逆文本頻率指數(shù)
思想: 如果某個詞或短語在一篇文章中出現(xiàn)的頻率TF高, 并且在其他文章中很少出現(xiàn), 則認(rèn)為此詞或者短語具有很好的類別區(qū)分能力, 適合用來分類.
具體原理描述:
TF: 某個詞在該文件中出現(xiàn)的次數(shù)(往往會被歸一化).
IDF: 度量詞語的普遍性, 某一詞語的IDF=log數(shù)數(shù)IDF=log?包含該詞語的文件數(shù)目總文件數(shù)目
如果一個詞語的TF很高而IDF很低, 則它的TF-IDF權(quán)重就會很高, 即該詞語有很好的分類能力.

3. sklearn庫

sklearn是基于numpy和scipy的一個機(jī)器學(xué)習(xí)算法庫.

3.1 該庫共包括三大模塊:

監(jiān)督學(xué)習(xí): neighbors, svm, kernel-ridge, discriminant_analysis 等
無監(jiān)督學(xué)習(xí): cluster, manifold, mixture, neural_network 等
數(shù)據(jù)變換: feature_extraction, feature_selection, preprocess 等

4. 數(shù)據(jù)集和訓(xùn)練任務(wù)

tmt.txt, eng.txt, food.txt: 這三個txt文件是訓(xùn)練數(shù)據(jù), 每一行都是一個物品的介紹, 文件名指的是產(chǎn)品的類別(訓(xùn)練集共包含三個類別的產(chǎn)品).
test.txt: 這個txt文件是測試數(shù)據(jù), 和訓(xùn)練數(shù)據(jù)一樣每一行都是一個物品的介紹, 要訓(xùn)練一個模型來判斷每一行說的是那種物品.
在訓(xùn)練之前, 我把這些txt文件都按行拆分為了很多小txt, 如tmt_1.txt中的內(nèi)容是tmt.txt第一行的內(nèi)容. txt文件的按行拆分可以使用”txt殺手”這個小工具.

5. 整個訓(xùn)練步驟

(1) 用jieba分詞(corpus_segment.py).

主要使用了jieba這個工具庫.

(2) 把分好的詞轉(zhuǎn)換為sklearn庫中的Bunch格式(corpus2Bunch.py).

分詞后的結(jié)果依然是一系列的txt文件, 這一步是把它們變成變量, 采用的是sklearn庫中的Bunch數(shù)據(jù)結(jié)構(gòu). Bunch結(jié)構(gòu)可以理解為字典, 它的每一行都包含了四個信息: 類別(target_name, 包括tmt, eng, food, test), 文件名(filenames), 文本標(biāo)簽(label, 包括tmt, eng, food), 文本內(nèi)容(contents).

bunch = Bunch(target_name=[], label=[], filenames=[], contents=[])
(3) 用TF-IDF構(gòu)建有權(quán)詞向量空間(TFIDF_space.py).

這部分的任務(wù)是構(gòu)建詞向量空間W.
每一個詞都是W的一個維度(好比是三維空間中的x, y, z), 該維度上的值是該詞的權(quán)重(由TF-IDF算出). 為了減少W的維度, 要把沒用的詞(如”的”, “了”等)去掉, 為實(shí)現(xiàn)這個功能可以使用一個停用詞表, 把沒用的詞剔除.
注意測試集和訓(xùn)練集要用同一個詞向量空間W. 因此測試集出現(xiàn)但是訓(xùn)練集中沒有出現(xiàn)的詞將不再設(shè)為W的一個維度.
該部分最后的運(yùn)行結(jié)果有兩個: (1) 詞典(單詞及其對應(yīng)的序號), (2) 權(quán)重矩陣tdm(該矩陣是二維的, 即tdm[i][j]表示第i個詞在第j個類別中的權(quán)值).

(4) 用樸素貝葉斯算法對test數(shù)據(jù)進(jìn)行分類(NBayes_Predict.py).

所有源碼: https://github.com/YasinQiu/Chinese-Text-Classification-NBayes

總結(jié)

以上是生活随笔為你收集整理的[NLP] 中文文本相似度实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。