Synonyms: 中文近義詞工具包
Synonyms
Chinese Synonyms for Natural Language Processing and Understanding.
最好的中文近義詞工具包: https://github.com/huyingxi/Synonyms/。
synonyms
可以用於自然語言理解的很多工:文字對齊,推薦演算法,相似度計算,語義偏移,關鍵字提取,概念提取,自動摘要,搜尋引擎等。
Welcome
pip install -U synonyms
相容py2和py3,當前穩定版本 v2.2。同時,Node.js 使用者可以使用 node-synonyms
npm install node-synonyms
Samples
Usage
synonyms#nearby
import synonyms
print("人臉: %s" % (synonyms.nearby("人臉")))
print("識別: %s" % (synonyms.nearby("識別")))
print("NOT_EXIST: %s" % (synonyms.nearby("NOT_EXIST")))
synonyms.nearby(WORD)
返回一個list,list中包含兩項:[[nearby_words], [nearby_words_score]]
nearby_words
是WORD的近義詞們,也以list的方式儲存,並且按照距離的長度由近及遠排列,nearby_words_score
是nearby_words
中對應位置的詞的距離的分數,分數在(0-1)區間內,越接近於1,代表越相近。比如:
synonyms.nearby(人臉) = [
["圖片", "影象", "通過觀察", "數字影象", "幾何圖形", "臉部", "圖象", "放大鏡", "面孔", "Mii"],
[0.597284, 0.580373, 0.568486, 0.535674, 0.531835, 0.530
095, 0.525344, 0.524009, 0.523101 , 0.516046]]
在OOV的情況下,返回 [[], []]
,目前的字典大小: 125,792。
synonyms#compare
兩個句子的相似度比較
sen1 = "發生歷史性變革"
sen2 = "發生歷史性變革"
r = synonyms.compare(sen1, sen2, seg=True)
其中,引數 seg 表示 synonyms.compare是否對sen1 和 sen2進行分詞,預設為 True。返回值:[0-1],並且越接近於1代表兩個句子越相似。
旗幟引領方向 vs 道路決定命運: 0.429
旗幟引領方向 vs 旗幟指引道路: 0.93
發生歷史性變革 vs 發生歷史性變革: 1.0
synonyms#display
以友好的方式列印近義詞,方便除錯,display
呼叫了 synonyms#nearby
方法。
>>> synonyms.display("飛機")
'飛機'近義詞:
1. 架飛機:0.837399
2. 客機:0.764609
3. 直升機:0.762116
4. 民航機:0.750519
5. 航機:0.750116
6. 起飛:0.735736
7. 戰機:0.734975
8. 飛行中:0.732649
9. 航空器:0.723945
10. 運輸機:0.720578
PCA
Demo
$ pip install -r Requirements.txt
$ python demo.py
Voice of Users
Data
synonyms/data/words.nearby.x.pklz # compressed pickle object
data is built based on wikidata-corpus.
Valuation
同義詞詞林
《同義詞詞林》是梅家駒等人於1983年編纂而成,現在使用廣泛的是哈工大社會計算與資訊檢索研究中心維護的《同義詞詞林擴充套件版》,它精細的將中文詞彙劃分成大類和小類,梳理了詞彙間的關係,同義詞詞林擴充套件版包含詞語77,343條,其中32,470被以開放資料形式共享。
知網, HowNet
HowNet,也被稱為知網,它並不只是一個語義字典,而是一個知識系統,詞彙之間的關係是其一個基本使用場景。知網包含詞語8,265條。
國際上對詞語相似度演算法的評價標準普遍採用 Miller&Charles 釋出的英語詞對集的人工判定值。該詞對集由十對高度相關、十對中度相關、十對低度相關共 30 個英語詞對組成,然後讓38個受試者對這30對進行語義相關度判斷,最後取他們的平均值作為人工判定標準。然後不同近義詞工具也對這些詞彙進行相似度評分,與人工判定標準做比較,比如使用皮爾森相關係數。在中文領域,使用這個詞表的翻譯版進行中文近義詞比較也是常用的辦法。
對比
Synonyms的詞表容量是125,792,下面選擇一些在同義詞詞林、知網和Synonyms都存在的幾個詞,給出其近似度的對比:
注:同義詞林及知網資料、分數來源, https://github.com/yaleimeng/Final_word_Similarity
Benchmark
Test with py3, MacBook Pro.
python benchmark.py
++++++++++ OS Name and version ++++++++++
Platform: Darwin
Kernel: 16.7.0
Architecture: (‘64bit’, ”)
++++++++++ CPU Cores ++++++++++
Cores: 4
CPU Load: 60
++++++++++ System Memory ++++++++++
meminfo 8GB
synonyms#nearby: 100000 loops, best of 3 epochs: 0.209 usec per loop
Live Sharing
線上分享實錄: Synonyms 中文近義詞工具包 @ 2018-02-07
Statement
Synonyms釋出證書 GPL 3.0。資料和程式可用於研究和商業產品,必須註明引用和地址,比如釋出的任何媒體、期刊、雜誌或部落格等內容。
@online{Synonyms:hain2017,
author = {Hai Liang Wang, Hu Ying Xi},
title = {中文近義詞工具包Synonyms},
year = 2017,
url = {https://github.com/huyingxi/Synonyms},
urldate = {2017-09-27}
}
任何基於Synonyms衍生的資料和專案也需要開放並需要宣告一致的“宣告”。