Chinese Synonyms for Natural Language Processing and Understanding.
更好的中文近義詞:聊天機器人、智慧問答工具包。
synonyms
可以用於自然語言理解的許多任務:文字對齊,推薦演算法,相似度計算,語義偏移,關鍵字提取,概念提取,自動摘要,搜尋引擎等。
為提供穩定、可靠、長期優化的服務,Synonyms 改為使用春松許可證, v1.0 並針對機器學習模型的下載進行收費,詳見證書店。先前的貢獻者(突出貢獻的程式碼貢獻者),可與我們聯繫,討論收費問題。 -- Chatopera Inc. @ Oct. 2023
Follow steps below to install and activate packages.
pip install -U synonyms
當前穩定版本v3.x。
Synonyms's machine learning model package(s) requires a License from Chatopera License Store, first purchase a License and get the license id
from Licenses page on Chatopera License Store( 圖譜license id
).
Secondly, set environment variable in your terminal or shell scripts as below.
eg Shell, CMD Scripts on Linux, Windows, macOS.
# Linux / macOS
export SYNONYMS_DL_LICENSE=YOUR_LICENSE
# # e.g. if your license id is `FOOBAR`, run `export SYNONYMS_DL_LICENSE=FOOBAR`
# Windows
# # 1/2 Command Prompt
set SYNONYMS_DL_LICENSE=YOUR_LICENSE
# # 2/2 PowerShell
$env :SYNONYMS_DL_LICENSE= ' YOUR_LICENSE '
Jupyter Notebook, etc.
import os
os . environ [ "SYNONYMS_DL_LICENSE" ] = "YOUR_LICENSE"
_licenseid = os . environ . get ( "SYNONYMS_DL_LICENSE" , None )
print ( "SYNONYMS_DL_LICENSE=" , _licenseid )
提示:安裝後初次使用會下載詞向量文件,下載速度取決於網路狀況。
Last, download the model package by command or script -
python -c " import synonyms; synonyms.display('能量') " # download word vectors file
支援使用環境變數配置分詞詞表和word2vec 詞向量檔案。
環境變數 | 描述 |
---|---|
SYNONYMS_WORD2VEC_BIN_MODEL_ZH_CN | 使用word2vec 訓練的詞向量文件,二進位格式。 |
SYNONYMS_WORDSEG_DICT | 中文分詞主字典,格式和使用參考 |
SYNONYMS_DEBUG | ["TRUE"|"FALSE"], 是否輸出偵錯日誌,設定為“TRUE” 輸出,預設為“FALSE” |
import synonyms
print ( "人脸: " , synonyms . nearby ( "人脸" ))
print ( "识别: " , synonyms . nearby ( "识别" ))
print ( "NOT_EXIST: " , synonyms . nearby ( "NOT_EXIST" ))
synonyms.nearby(WORD [,SIZE])
傳回一個元組,元組中包含兩項: ([nearby_words], [nearby_words_score])
, nearby_words
是WORD 的近義詞們,也以 list 的方式存儲,並且按照距離的長度由近及遠排列, nearby_words_score
是nearby_words
中對應位置的詞的距離的分數,分數在(0-1)區間內,越接近於1,代表越相近; SIZE
是返回詞彙數量,預設10。比如:
synonyms . nearby (人脸, 10 ) = (
[ "图片" , "图像" , "通过观察" , "数字图像" , "几何图形" , "脸部" , "图象" , "放大镜" , "面孔" , "Mii" ],
[ 0.597284 , 0.580373 , 0.568486 , 0.535674 , 0.531835 , 0.530
095 , 0.525344 , 0.524009 , 0.523101 , 0.516046 ])
在OOV 的情況下,回傳([], [])
,目前的字典大小: 435,729。
兩句的相似度比較
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
以友善的方式列印近義詞,方便調試, display(WORD [, SIZE])
呼叫了synonyms#nearby
方法。
>> > synonyms . display ( "飞机" )
'飞机'近义词:
1. 飞机: 1.0
2. 直升机: 0.8423391
3. 客机: 0.8393003
4. 滑翔机: 0.7872388
5. 军用飞机: 0.7832081
6. 水上飞机: 0.77857226
7. 运输机: 0.7724742
8. 航机: 0.7664748
9. 航空器: 0.76592904
10. 民航机: 0.74209654
SIZE
是列印詞彙表的數量,預設為10。
列印目前包的描述資訊:
>>> synonyms.describe()
Vocab size in vector model: 435729
model_path: /Users/hain/chatopera/Synonyms/synonyms/data/words.vector.gz
version: 3.18.0
{'vocab_size': 435729, 'version': '3.18.0', 'model_path': '/chatopera/Synonyms/synonyms/data/words.vector.gz'}
取得一個詞語的向量,該向量為numpy 的array,當該詞語是未登錄詞時,拋出KeyError 異常。
>> > synonyms . v ( "飞机" )
array ([ - 2.412167 , 2.2628384 , - 7.0214124 , 3.9381874 , 0.8219283 ,
- 3.2809453 , 3.8747153 , - 5.217062 , - 2.2786229 , - 1.2572327 ],
dtype = float32 )
得到一個分詞後句子的向量,向量以BoW 方式組成
sentence : 句子是分词后通过空格联合起来
ignore : 是否忽略OOV , False时,随机生成一个向量
中文分詞
synonyms . seg ( "中文近义词工具包" )
分詞結果,由兩個list 組成的元組,分別是單字和對應的詞性。
([ '中文' , '近义词' , '工具包' ], [ 'nz' , 'n' , 'n' ])
該分詞不去停用詞和標點。
提取關鍵字,預設按照重要程度提取關鍵字。
keywords = synonyms.keywords("9月15日以来,台积电、高通、三星等华为的重要合作伙伴,只要没有美国的相关许可证,都无法供应芯片给华为,而中芯国际等国产芯片企业,也因采用美国技术,而无法供货给华为。目前华为部分型号的手机产品出现货少的现象,若该形势持续下去,华为手机业务将遭受重创。")
Get more logs for debugging, set environment variable.
SYNONYMS_DEBUG=TRUE
以「人臉」為例主要成分分析:
$ pip install -r Requirements.txt
$ python demo.py
更新情況說明。
用戶怎麼說:
data is built based on wikidata-corpus.
《同義詞林》是梅家駒等人於1983 年編纂而成,現在使用廣泛的是哈工大社會計算與資訊檢索研究中心維護的《同義詞林擴展版》,它精細的將中文詞彙劃分成大類和小類,梳理了詞彙間的關係,同義詞林擴展版包含詞語7 萬餘條,其中3 萬餘條被以開放資料形式共享。
HowNet,也被稱為知網,它不只是一個語義字典,而是一個知識系統,詞彙之間的關係是其一個基本使用場景。知網包含詞語8 餘條。
國際上對詞語相似度演算法的評估標準普遍採用Miller&Charles 所發布的英語詞對集的人工判定值。該詞對集由十對高度相關、十對中度相關、十對低度相關共30 個英語詞對組成,然後讓38 個受試者對這30 對進行語義相關度判斷,最後取他們的平均值作為人工判定標準。然後不同近義詞工具也會對這些詞彙進行相似度評分,與人工判定標準做比較,例如使用皮爾森相關係數。在中文領域,使用這個詞表的翻譯版進行中文近義詞比較也是常用的方法。
Synonyms 的詞表容量是435,729,以下選擇一些在同義詞詞林、知網和Synonyms 都存在的幾個詞,給出其近似度的對比:
註:同義詞林及知網資料、分數來源。 Synonyms 也在不斷優化中,新的分數可能和上圖不一致。
更多比對結果。
Github 關聯使用者列表
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
52nlp.cn
機器之心
線上分享實錄: Synonyms 中文近義詞工具包@ 2018-02-07
Synonyms發布證書MIT。資料和程式可用於研究和商業產品,必須註明引用和地址,例如發布的任何媒體、期刊、雜誌或部落格等內容。
@online{Synonyms:hain2017,
author = {Hai Liang Wang, Hu Ying Xi},
title = {中文近义词工具包Synonyms},
year = 2017,
url = {https://github.com/chatopera/Synonyms},
urldate = {2017-09-27}
}
wikidata-corpus
word2vec 原理推導與程式碼分析
不支持,欲了解更多請看#5
Google 發布的word2vec,該函式庫由C 語言編寫,記憶體使用效率高,訓練速度快。 gensim 可以載入word2vec 輸出的模型檔。
詳見#64
Hai Liang Wang
Hu Ying Xi
本書由Synonyms 作者參與著作。
快速購書鏈接
《智能問答與深度學習》 這本書是服務於準備入門機器學習和自然語言處理的學生和軟體工程師的,在理論上介紹了很多原理、算法,同時也提供很多示例程序增加實踐性,這些程序被匯總到範例程式碼庫,這些程式主要是幫助大家理解原理和演算法的,歡迎大家下載和執行。程式碼庫的位址是:
https://github.com/l11x0m7/book-of-qna-code
Word2vec by Google
Wikimedia: 訓練語料來源
gensim: word2vec.py
SentenceSim: 相似度評測語料
jieba: 中文分詞
Chunsong Public License, version 1.0
https://bot.chatopera.com/
Chatopera 雲端服務是一站式實現聊天機器人的雲端服務,按介面呼叫次數計費。 Chatopera 雲端服務是Chatopera 機器人平台的軟體即服務實例。在雲端運算基礎上,Chatopera 雲端服務屬於聊天機器人即服務的雲端服務。
Chatopera 機器人平台包括知識庫、多輪對話、意圖識別和語音識別等元件,標準化聊天機器人開發,支援企業OA 智慧問答、HR 智慧問答、智慧客服和網路行銷等場景。企業IT 部門、業務部門借助Chatopera 雲端服務快速讓聊天機器人上線!