NLP, 知識圖譜參考資源
NLP
書籍
網站
工具
Natural Language Toolkit(NLTK)
OpenNLP
FudanNLP
Stanford CoreNLP
THUCTC
THUCTC(THU Chinese Text Classification)是由清華大學自然語言處理實驗室推出的中文文字分類工具包。
http://thuctc.thunlp.org/
gensim
情感分析的新方法——基於Word2Vec/Doc2Vec/Python
GloVe
textsum
jieba
NLPIR
snownlp
HanLP
HanLP是一個目前留學日本的中國學生的作品。
官網:
http://hanlp.linrunsoft.com/
作者blog:
http://www.hankcs.com/
Github:
https://github.com/hankcs/HanLP/
從作者的名氣來說,HanLP無疑是最低的,效能也不見得有多好。然而對於初學者來說,這卻是最適合的工具。這主要體現在以下幾個方面:
1.中文處理能力。NLTK和OpenNLP對中文支援非常差,這裡不光是中文分詞的問題,有些NLP演算法需要一定的語言模型資料,但瀏覽NLTK官方的模型庫,基本找不到中文模型資料。
2.jieba、IK之類的功能太單一,多數侷限在中文分詞方面領域。gensim、THUCTC專注於NLP的某一方面,也不是通用工具。
3.NLPIR和Stanford CoreNLP算是功能最強的工具包了。前者的問題在於收費不開源,後者的問題在於缺少中文文件。FudanNLP的相關文件較少,文件友好度不如HanLP。
4.HanLP在主頁上提供了相關演算法的blog,便於初學者快速掌握相關概念。其詞典是明文釋出,便於使用者修改。HanLP執行時,會將明文詞典以特定結構快取,以提高執行效率。
注:不要以為中文有分詞問題,就比別的語言複雜,英文還有詞根問題呢。。。每種語言都不簡單。
AllenNLP
NLPchina
Ansj
Ansj是一個NLPchina旗下的開源的Java中文分詞工具,基於中科院的ictclas中文分詞演算法,比其他常用的開源分詞工具(如mmseg4j)的分詞準確率更高。
https://github.com/NLPchina/ansj_seg
Word2VEC_java
ansj_fast_lda
nlp-lang
詞性標註
ICTPOS3.0漢語詞性標記集
Word Hashing
Word Hashing是非常重要的一個trick,以英文單詞來說,比如good,他可以寫成#good#,然後按tri-grams來進行分解為#go goo ood od#,再將這個tri-grams灌入到bag-of-word中,這種方式可以非常有效的解決vocabulary太大的問題(因為在真實的web search中vocabulary就是異常的大),另外也不會出現oov問題,因此英文單詞才26個,3個字母的組合都是有限的,很容易列舉光。
那麼問題就來了,這樣兩個不同的單詞會不會產出相同的tri-grams,paper裡面做了統計,說了這個衝突的概率非常的低,500K個word可以降到30k維,衝突的概率為0.0044%。
但是在中文場景下,這個Word Hashing估計沒有這麼有效了。
詞彙共現
詞彙共現是指詞彙在文件集中共同出現。以一個詞為中心,可以找到一組經常與之搭配出現的詞,作為它的共現詞彙集。
詞彙共現的其中一種用例:
有若干關鍵詞,比如:水果、天氣、風,有若干描述詞,比如,很甜、晴朗、很大,然後現在要找出他們之間的搭配,在這個例子裡,我們最終要找到:水果很甜、天氣晴朗、風很大
關鍵詞提取
主要三種方法:
1.基於統計特徵,如TF-IDF。
2.基於詞圖模型,如TextRank。
3.基於主題模型,如LDA。
自然語言理解
Natural language understanding(NLU)屬於NLP的一個分支,屬於人工智慧的一個部分,用來解決機器理解人類語言的問題,屬於人工智慧的核心難題。
NLU之意圖分類
論文
《Distant Supervision for relation extraction without labeled data》
《Using Recurrent Neural Networks for Slot Filling in Spoken Language Understanding》
《Convolutional Neural Networks for Sentence Classification》:TextCNN的開山之作