nlp(Natural Language Processing) 簡稱:自然語言處理
以下爲自然語言處理用到的基礎算法,包括詞法分析、句法分析、語義分析、文檔分析、其他
一、詞法分析
詞法分析包括分詞、詞性標註、實體識別、拼寫檢查等。
1、分詞
分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。在英文的行文中,單詞之間是以空格作爲自然分界符的,而中文只是字、句和段能通過明顯的分界符來簡單劃界,唯獨詞沒有一個形式上的分界符,雖然英文也同樣存在短語的劃分問題,不過在詞這一層上,中文比之英文要複雜得多、困難得多。
這裏只寫中文的分詞方法。
jieba分詞:常用輕量級的分詞方法工具(可以實現分詞、詞性標註、關鍵詞提取等)
項目地址:github:https://github.com/fxsjy/jieba
簡單示例:
import jieba
import jieba.posseg as pseg
import jieba.analyse
str1 = "我來到北京清華大學"
str2 = 'python的正則表達式是好用的'
str3 = "小明碩士畢業於中國科學院計算所,後在日本京都大學深造"
seg_list = jieba.cut(str1,cut_all = True) ##全模式
result = pseg.cut(str1) ##詞性標註,標註句子分詞後每個詞的詞性
result2 = jieba.cut(str1) ##默認是精準模式
result3 = jieba.analyse.extract_tags(str1,2)
##關鍵詞提取,參數setence對應str1爲待提取的文本,topK對應2爲返回幾個TF/IDF權重最大的關鍵詞,默認值爲20
result4 = jieba.cut_for_search(str3) ##搜索引擎模式
print(" /".join(seg_list))
我 /來到 /北京 /清華 /清華大學 /華大 /大學
print(" /".join(result2))
我 /來到 /北京 /清華大學
hanlp分詞系統
hanlp可以實現很多功能,例如分詞、標註、實體識別等。
功能請參考:http://www.cnblogs.com/iihcy/p/5106305.html
個人感覺hanlp要比jieba功能強大很多
簡單示例:
from pyhanlp import *
CRFnewSegment = HanLP.newSegment("crf")
term_list = CRFnewSegment.seg("我來到北京清華大學")
print(term_list)
[我/r, 來到/v, 北京清華大學/nt]
項目地址:
HanLP項目主頁:https://github.com/hankcs/HanLP
HanLP下載地址:https://github.com/hankcs/HanLP/releases