Macropodus自然語言處理(NLP)工具包(Albert+BiLSTM+CRF)

一、簡介

        Macropodus自然語言處理工具(Albert+BiLSTM+CRF) 中文分詞 命名實體識別 新詞發現 關鍵詞 文本摘要 計算器 中文數字阿拉伯數字轉換。

        Macropodus是一個以Albert+BiLSTM+CRF網絡結構爲基礎,用大規模中文語料訓練的自然語言處理工具包。將提供中文分詞、命名實體識別、關鍵詞抽取、文本摘要、新詞發現、文本相似度、計算器、數字轉化等常見NLP功能。

        github地址: https://github.com/yongzhuo/Macropodus

二、 安裝

        1. 通過PyPI安裝(自帶模型文件):

         pip install macropodus

        2. 使用鏡像源,例如:

        pip install -i https://pypi.tuna.tsinghua.edu.cn/simple macropodus

三、 使用方式

        1. 快速使用:

import macropodus

sen_calculate = "23 + 13 * (25+(-9-2-5-2*3-6/3-40*4/(2-3)/5+6*3))加根號144你算得幾多"
sen_chi2num = "三千零七十八億三千零十五萬零三百一十二點一九九四"
sen_num2chi = 1994.1994
sent1 = "PageRank算法簡介"
sent2 = "百度百科如是介紹他的思想:PageRank通過網絡浩瀚的超鏈接關係來確定一個頁面的等級。"
summary = "PageRank算法簡介。" \
           "是上世紀90年代末提出的一種計算網頁權重的算法! " \
           "當時,互聯網技術突飛猛進,各種網頁網站爆炸式增長。 " \
           "業界急需一種相對比較準確的網頁重要性計算方法。 " \
           "是人們能夠從海量互聯網世界中找出自己需要的信息。 " \
           "百度百科如是介紹他的思想:PageRank通過網絡浩瀚的超鏈接關係來確定一個頁面的等級。 " \
           "Google把從A頁面到B頁面的鏈接解釋爲A頁面給B頁面投票。 " \
           "Google根據投票來源甚至來源的來源,即鏈接到A頁面的頁面。 " \
           "和投票目標的等級來決定新的等級。簡單的說, " \
           "一個高等級的頁面可以使其他低等級頁面的等級提升。 " \
           "具體說來就是,PageRank有兩個基本思想,也可以說是假設。 " \
           "即數量假設:一個網頁被越多的其他頁面鏈接,就越重)。 " \
           "質量假設:一個網頁越是被高質量的網頁鏈接,就越重要。 " \
           "總的來說就是一句話,從全局角度考慮,獲取重要的信。 "

# 分詞(詞典最大概率分詞DAG)
words = macropodus.cut(summary)
print(words)
# 新詞發現
new_words = macropodus.find(summary)
print(new_words)
# 文本摘要
sum = macropodus.summarize(summary)
print(sum)
# 關鍵詞抽取
keyword = macropodus.keyword(summary)
print(keyword)
# 文本相似度
sim = macropodus.sim(sent1, sent2)
print(sim)
# tookit
# 計算器
score_calcul = macropodus.calculate(sen_calculate)
print(score_calcul)
# 中文數字與阿拉伯數字相互轉化
res_chi2num = macropodus.chi2num(sen_chi2num)
print(res_chi2num)
res_num2chi = macropodus.num2chi(sen_num2chi)
print(res_num2chi)

       

        2. 中文分詞:

import macropodus

# 用戶詞典
macropodus.add_word(word="鬥魚科")
macropodus.add_word(word="鱸形目") # 不持久化, 當前有效
macropodus.save_add_words(word_freqs={"喜鬥":32, "護卵":64, "護幼":132}) # 持久化保存到用戶字典
sent = "鬥魚屬,Macropodus (1801),鱸形目鬥魚科的一屬魚類。本屬魚類通稱鬥魚。因喜鬥而得名。分佈於亞洲東南部。中國有2種,即叉尾鬥魚,分佈於長江及以南各省;叉尾鬥魚,分佈於遼河到珠江流域。其喜棲居於小溪、河溝、池塘、稻田等緩流或靜水中。雄魚好鬥,產卵期集草成巢,雄魚口吐粘液泡沫,雌魚產卵其中,卵浮性,受精卵在泡沫內孵化。雄魚尚有護卵和護幼現象。"

# 分詞
sents = macropodus.cut_bidirectional(sent)
print("cut_bidirectional: " + " ".join(sents))
sents = macropodus.cut_forward(sent)
print("cut_forward: " + " ".join(sents))
sents = macropodus.cut_reverse(sent)
print("cut_reverse: " + " ".join(sents))
sents = macropodus.cut_search(sent)
print("cut_search: " + " ".join(sents))
# DAG
sents = macropodus.cut_dag(sent)
print("cut_dag: " + " ".join(sents))

       

        3. 文本相似度:

import macropodus

sent1="叉尾鬥魚是一種觀賞性動物"
sent2="中國鬥魚生性好鬥,適應性強,能在惡劣的環境中生存"
           
# 文本相似度(similarity)
sents = macropodus.sim(sent1, sent2, type_sim="total", type_encode="avg")
print(sents)
sents = macropodus.sim(sent1, sent2, type_sim="cosine", type_encode="single")
print(sents)

       

        4. 文本摘要:

import macropodus

summary = "PageRank算法簡介。" \
           "是上世紀90年代末提出的一種計算網頁權重的算法! " \
           "當時,互聯網技術突飛猛進,各種網頁網站爆炸式增長。 " \
           "業界急需一種相對比較準確的網頁重要性計算方法。 " \
           "是人們能夠從海量互聯網世界中找出自己需要的信息。 " \
           "百度百科如是介紹他的思想:PageRank通過網絡浩瀚的超鏈接關係來確定一個頁面的等級。 " \
           "Google把從A頁面到B頁面的鏈接解釋爲A頁面給B頁面投票。 " \
           "Google根據投票來源甚至來源的來源,即鏈接到A頁面的頁面。 " \
           "和投票目標的等級來決定新的等級。簡單的說, " \
           "一個高等級的頁面可以使其他低等級頁面的等級提升。 " \
           "具體說來就是,PageRank有兩個基本思想,也可以說是假設。 " \
           "即數量假設:一個網頁被越多的其他頁面鏈接,就越重)。 " \
           "質量假設:一個網頁越是被高質量的網頁鏈接,就越重要。 " \
           "總的來說就是一句話,從全局角度考慮,獲取重要的信。 "
           
# 文本摘要(summarize, 默認接口)
sents = macropodus.summarize(summary)
print(sents)

# 文本摘要(summarization, 可定義方法, 提供9種文本摘要方法, 'lda', 'mmr', 'textrank', 'text_teaser')
sents = macropodus.summarization(text=summary, type_summarize="lda")
print(sents)

       

        5. 新詞發現:

import macropodus

summary = "PageRank算法簡介。" \
           "是上世紀90年代末提出的一種計算網頁權重的算法! " \
           "當時,互聯網技術突飛猛進,各種網頁網站爆炸式增長。 " \
           "業界急需一種相對比較準確的網頁重要性計算方法。 " \
           "是人們能夠從海量互聯網世界中找出自己需要的信息。 " \
           "百度百科如是介紹他的思想:PageRank通過網絡浩瀚的超鏈接關係來確定一個頁面的等級。 " \
           "Google把從A頁面到B頁面的鏈接解釋爲A頁面給B頁面投票。 " \
           "Google根據投票來源甚至來源的來源,即鏈接到A頁面的頁面。 " \
           "和投票目標的等級來決定新的等級。簡單的說, " \
           "一個高等級的頁面可以使其他低等級頁面的等級提升。 " \
           "具體說來就是,PageRank有兩個基本思想,也可以說是假設。 " \
           "即數量假設:一個網頁被越多的其他頁面鏈接,就越重)。 " \
           "質量假設:一個網頁越是被高質量的網頁鏈接,就越重要。 " \
           "總的來說就是一句話,從全局角度考慮,獲取重要的信。 "
           
# 新詞發現(findword, 默認接口)
sents = macropodus.find(text=summary, freq_min=2, len_max=7, entropy_min=1.2, aggregation_min=0.5, use_avg=True)
print(sents)

        6. 關鍵詞:

 

import macropodus

sent = "鬥魚屬,Macropodus (1801),鱸形目鬥魚科的一屬魚類。本屬魚類通稱鬥魚。因喜鬥而得名。分佈於亞洲東南部。中國有2種,即叉尾鬥魚,分佈於長江及以南各省;叉尾鬥魚,分佈於遼河到珠江流域。其喜棲居於小溪、河溝、池塘、稻田等緩流或靜水中。雄魚好鬥,產卵期集草成巢,雄魚口吐粘液泡沫,雌魚產卵其中,卵浮性,受精卵在泡沫內孵化。雄魚尚有護卵和護幼現象。"
# 關鍵詞(keyword)
sents = macropodus.keyword(sent)
print(sents)

        7. 常用小工具:

 

import macropodus

sen_calculate = "23 + 13 * (25+(-9-2-5-2*3-6/3-40*4/(2-3)/5+6*3))加根號144你算得幾多"
sen_chi2num = "三千零七十八億三千零十五萬零三百一十二點一九九四"
sen_num2chi = 1994.1994
# tookit, 科學計算器
score_calcul = macropodus.calculate(sen_calculate)
print(score_calcul)
# tookit, 中文數字轉阿拉伯
res_chi2num = macropodus.chi2num(sen_chi2num)
print(res_chi2num)
# tookit, 阿拉伯數字轉中文
res_num2chi = macropodus.num2chi(sen_num2chi)
print(res_num2chi)

三、 參考/引用

* textrank_gensim: https://github.com/RaRe-Technologies/gensim
* 最大概率(DAG-動態規劃)詞典分詞: https://github.com/fxsjy/jieba
* CRF(-未解決): https://github.com/BrikerMan/Kashgari

 

希望對你有所幫助!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章