日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

中文实体命名识别工具使用汇总:Stanza、LAC、Ltp、Hanlp、foolnltk、NLTK、BosonNLP

發(fā)布時間:2024/7/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中文实体命名识别工具使用汇总:Stanza、LAC、Ltp、Hanlp、foolnltk、NLTK、BosonNLP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實體命名識別

    • 相關知識
    • Stanford CoreNLP 命名實體識別
      • 一、簡介:
      • 二、java版本使用
      • 三、python版本使用
    • NLTK 命名實體識別
      • 一、簡介:
      • 二、搭建環(huán)境
      • 三、nltk使用
        • 1、英文實體命名初體驗
        • 2、使用nltk來處理中文資料
          • 結(jié)巴分詞使用
    • foolnltk 命名實體識別
      • 一、簡介
      • 二、python版本使用
    • Ltp 實體命名識別
      • 一、簡介
      • 二、使用
    • LAC 實體命名
      • 一、簡介
      • 二、python版本使用
    • BosonNLP 實體識別
      • 一、簡介
      • 二、python版本使用
    • Hanlp 實體識別
      • 一、簡介
      • 二、python版本使用

相關知識

信息抽取:從數(shù)據(jù)庫中抽取信息是容易的,但對于從自然文本中抽取信息則不那么直觀。通常信息抽取的流程如下圖:


分塊是實體識別(NER)使用的基本技術,詞性標注是分塊所需的最主要信息。下面以名詞短語(NP)為例,展示如何分塊。類似的還可以對動詞短語,介詞短語等進行分塊。

命名實體識別(Named Entity Recognition,簡稱NER)用于識別文本中具有特定意義的實體。需要識別的實體可以分為三大類(實體類、時間類和數(shù)字類)和七小類(人名、機構(gòu)名、地名、時間、日期、貨幣和百分比)。

中文命名實體識別工具(NER)哪家強?

介紹幾個專門面向中文的命名實體識別和關系抽取工具

Stanford CoreNLP 命名實體識別

一、簡介:

CoreNLP是Java自然語言處理的一站式服務!CoreNLP使用戶能夠?qū)С鑫谋镜恼Z言注釋,包括標記和句子邊界、詞性、命名實體、數(shù)值和時間值、依賴和選區(qū)解析、共指、情感、引用屬性和關系。CoreNLP的核心是管道。管道接收原始文本,對文本運行一系列NLP注釋器,并生成最終的注釋集。管道產(chǎn)生核心文檔,包含所有注釋信息的數(shù)據(jù)對象,可以通過簡單的API訪問,并且可以序列化到Google協(xié)議緩沖區(qū)。

中文語料模型包中有一個默認的配置文件

StanfordCoreNLP-chinese.properties

指定pipeline的操作步驟以及對應的語料文件的位置,可以自定義配置文件,再引入代碼中。實際上我們可能用不到所有的步驟,或者要使用不同的語料庫,因此可以自定義配置文件,然后再引入。那在我的項目中,我就直接讀取了該properties文件。(有時候我們只想使用ner功能,但不想使用其他功能,想去掉。然而,Stanford CoreNLP有一些局限,就是在ner執(zhí)行之前,一定需要tokenize, ssplit, pos, lemma 的引入,大大增加了耗時。)

更多用法參見官網(wǎng)。

二、java版本使用

idea+maven搭建工程

1、在pom.xml 添加依賴:

<properties><corenlp.version>3.9.1</corenlp.version> </properties><dependencies><!--CoreNLP的算法包--><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>${corenlp.version}</version></dependency><!--英文語料包--><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>3.9.1</version><classifier>models</classifier></dependency><!--中文預料包--><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>${corenlp.version}</version><classifier>models-chinese</classifier></dependency> </dependencies>

2、編寫java程序

package com;import java.util.List; import java.util.Map; import java.util.Properties;import edu.stanford.nlp.coref.CorefCoreAnnotations; import edu.stanford.nlp.coref.data.CorefChain; import edu.stanford.nlp.ling.CoreAnnotations; import edu.stanford.nlp.ling.CoreLabel; import edu.stanford.nlp.pipeline.Annotation; import edu.stanford.nlp.pipeline.StanfordCoreNLP; import edu.stanford.nlp.semgraph.SemanticGraph; import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations; import edu.stanford.nlp.trees.Tree; import edu.stanford.nlp.trees.TreeCoreAnnotations; import edu.stanford.nlp.util.CoreMap; /**代碼思想:將text字符串交給Stanford CoreNLP處理,StanfordCoreNLP的各個組件(annotator)按“tokenize(分詞), ssplit(斷句), pos(詞性標注), lemma(詞元化), ner(命名實體識別), parse(語法分析), dcoref(同義詞分辨)”順序進行處理。處理完后 List<CoreMap> sentences = document.get(SentencesAnnotation.class); 中包含了所有分析結(jié)果,遍歷即可獲知結(jié)果。**/public class StanfordChineseNlpExample2 {public static void main(String[] args) throws Exception {StanfordChineseNlpExample2 nlp=new StanfordChineseNlpExample2();nlp.test();}public void test() throws Exception {//構(gòu)造一個StanfordCoreNLP對象,配置NLP的功能,如lemma是詞干化,ner是命名實體識別等StanfordCoreNLP pipeline = new StanfordCoreNLP("StanfordCoreNLP-chinese.properties");String text = "袁隆平是中國科學院的院士,他于2009年10月到中國山東省東營市東營區(qū)永樂機場附近承包了一千畝鹽堿地,";long startTime = System.currentTimeMillis();// 創(chuàng)造一個空的Annotation對象Annotation document = new Annotation(text);// 對文本進行分析pipeline.annotate(document);//獲取文本處理結(jié)果List<CoreMap> sentences = document.get(CoreAnnotations.SentencesAnnotation.class);for (CoreMap sentence : sentences) {// traversing the words in the current sentence// a CoreLabel is a CoreMap with additional token-specific methodsfor (CoreLabel token : sentence.get(CoreAnnotations.TokensAnnotation.class)) {// 獲取句子的token(可以是作為分詞后的詞語)String word = token.get(CoreAnnotations.TextAnnotation.class);System.out.println(word);//詞性標注String pos = token.get(CoreAnnotations.PartOfSpeechAnnotation.class);System.out.println(pos);// 命名實體識別String ne = token.get(CoreAnnotations.NormalizedNamedEntityTagAnnotation.class);String ner = token.get(CoreAnnotations.NamedEntityTagAnnotation.class);System.out.println(word + " | analysis : { original : " + ner + "," + " normalized : "+ ne + "}");//詞干化處理String lema = token.get(CoreAnnotations.LemmaAnnotation.class);System.out.println(lema);}// 句子的解析樹Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class);System.out.println("句子的解析樹:");tree.pennPrint();// 句子的依賴圖SemanticGraph graph =sentence.get(SemanticGraphCoreAnnotations.CollapsedCCProcessedDependenciesAnnotation.class);System.out.println("句子的依賴圖");System.out.println(graph.toString(SemanticGraph.OutputFormat.LIST));}long endTime = System.currentTimeMillis();long time = endTime - startTime;System.out.println("The analysis lasts " + time + " seconds * 1000");// 指代詞鏈// 每條鏈保存指代的集合// 句子和偏移量都從1開始Map<Integer, CorefChain> corefChains = document.get(CorefCoreAnnotations.CorefChainAnnotation.class);if (corefChains == null) {return;}for (Map.Entry<Integer, CorefChain> entry : corefChains.entrySet()) {System.out.println("Chain " + entry.getKey() + " ");for (CorefChain.CorefMention m : entry.getValue().getMentionsInTextualOrder()) {// We need to subtract one since the indices count from 1 but the Lists start from 0List<CoreLabel> tokens = sentences.get(m.sentNum - 1).get(CoreAnnotations.TokensAnnotation.class);// We subtract two for end: one for 0-based indexing, and one because we want last token of mention// not one following.System.out.println(" " + m + ", i.e., 0-based character offsets [" + tokens.get(m.startIndex - 1).beginPosition()+", " + tokens.get(m.endIndex - 2).endPosition() + ")");}}} }

實體識別結(jié)果:

袁隆平 | analysis : { original : PERSON, normalized : null}| analysis : { original : O, normalized : null} 中國 | analysis : { original : ORGANIZATION, normalized : null} 科學院 | analysis : { original : ORGANIZATION, normalized : null}| analysis : { original : O, normalized : null} 院士 | analysis : { original : TITLE, normalized : null} , | analysis : { original : O, normalized : null}| analysis : { original : O, normalized : null}| analysis : { original : O, normalized : null} 2009年 | analysis : { original : DATE, normalized : 2009-10-XX} 10月 | analysis : { original : DATE, normalized : 2009-10-XX}| analysis : { original : O, normalized : null} 中國 | analysis : { original : COUNTRY, normalized : null} 山東省 | analysis : { original : STATE_OR_PROVINCE, normalized : null} 東營市 | analysis : { original : CITY, normalized : null} 東營區(qū) | analysis : { original : FACILITY, normalized : null} 永樂 | analysis : { original : FACILITY, normalized : null} 機場 | analysis : { original : FACILITY, normalized : null} 附近 | analysis : { original : O, normalized : null} 承包 | analysis : { original : O, normalized : null}| analysis : { original : O, normalized : null} 一千 | analysis : { original : NUMBER, normalized : 1000}| analysis : { original : O, normalized : null}| analysis : { original : O, normalized : null} 堿地 | analysis : { original : O, normalized : null} , | analysis : { original : O, normalized : null} The analysis lasts 989 seconds * 1000

大概可以識別到的類型有:人person、數(shù)字number、組織organization、頭銜title、省/市/區(qū)/位置province/city/facility/location、日期/時間date/time

實時在線演示:https://corenlp.run/

三、python版本使用

  • 安裝斯坦福大學NLP組的Stanza 。(要求:Python3.6及以上的版本)
  • pip install stanza
  • 下載中文模型打包文件
  • import stanza stanza.download('zh')

    出現(xiàn)問題:[WinError 10054] 遠程主機強迫關閉了一個現(xiàn)有的連接。
    解決方法:用梯子

  • 使用
  • # coding utf-8 import stanza# 可以通過pipeline預加載不同語言的模型,也可以通過pipeline選擇不同的處理模塊,還可以選擇是否使用GPU: zh_nlp = stanza.Pipeline('zh', use_gpu=False) text = "馬云在1998年7月31日出生于江蘇省鹽城市大豐區(qū)。"doc = zh_nlp(text) for sent in doc.sentences:print("Sentence:" + sent.text) # 斷句print("Tokenize:" + ' '.join(token.text for token in sent.tokens)) # 中文分詞print("UPOS: " + ' '.join(f'{word.text}/{word.upos}' for word in sent.words)) # 詞性標注(UPOS)print("XPOS: " + ' '.join(f'{word.text}/{word.xpos}' for word in sent.words)) # 詞性標注(XPOS)print("NER: " + ' '.join(f'{ent.text}/{ent.type}' for ent in sent.ents)) # 命名實體識別 Sentence:馬云在1998年7月31日出生于江蘇省鹽城市大豐區(qū)。 Tokenize:馬云 在 1998 年 7 月 31 日 出生 于 江蘇 省 鹽城 市 大豐 區(qū) 。 UPOS: 馬云/PROPN 在/ADP 1998/NUM 年/NOUN 7/NUM 月/NOUN 31/NUM 日/NOUN 出生/VERB 于/ADP 江蘇/PROPN 省/PART 鹽城/PROPN 市/PART 大豐/PROPN 區(qū)/PART 。/PUNCT XPOS: 馬云/NNP 在/IN 1998/CD 年/NNB 7/CD 月/NNB 31/CD 日/NNB 出生/VV 于/IN 江蘇/NNP 省/SFN 鹽城/NNP 市/SFN 大豐/NNP 區(qū)/SFN 。/. NER: 馬云/PERSON 1998年7月31日/DATE 江蘇/GPE 鹽城/GPE 大豐/GPE

    更多詳細信息見:斯坦福大學NLP組Python深度學習自然語言處理工具Stanza試用

    NLTK 命名實體識別

    一、簡介:

    NLTK對于自然語言處理有很多開箱即用的API,本文主要介紹如何使用NLTK進行中文命名實體識別。由于NLTK不支持中文分詞,所以本文使用了結(jié)巴分詞。

    二、搭建環(huán)境

    環(huán)境:windows64+python3

    前提:安裝好python3,并且安裝了numpy、matplotlib、pandas等一些常用的庫

    1、安裝PyYAML模塊和nltk模塊

    pip install pyyaml nltk

    2、下載NLTK的數(shù)據(jù)包

    方式一:界面下載

    在pycharm中寫一個python腳本,如下:

    import nltk nltk.download()

    運行腳本,出現(xiàn)如下界面,選擇all,設置下載路徑,點擊下載:

    下載時間很長,如果有個別數(shù)據(jù)包無法下載,可切換到All Packages標簽頁,雙擊指定的包來進行下載。

    方式二:命令行下載

    創(chuàng)建名稱為 nltk_data 的文件夾(比如我創(chuàng)建在了anacondas的目錄下)

    文件夾位置要求,程序會按照如下順序去找該文件夾,所以,你創(chuàng)建的文件夾在以下目錄即可:

    Searched in:

    • ‘C:\Users\10840/nltk_data’
      • ‘D:\develop\python\Anaconda3\nltk_data’
        • ‘D:\develop\python\Anaconda3\share\nltk_data’
        • ‘D:\develop\python\Anaconda3\lib\nltk_data’
        • ‘C:\Users\10840\AppData\Roaming\nltk_data’
        • ‘C:\nltk_data’
        • ‘D:\nltk_data’
        • ‘E:\nltk_data’
        • ’ ’

    cmd 進入 nltk_data 文件夾目錄,執(zhí)行命令 python -m nltk.downloader all

    關于下載的問題:[win error 10054] 遠程主機強迫關閉了一個現(xiàn)有的連接

    解決方法:1.使用梯子 2.從國內(nèi)別人上傳的云盤下載(文末鏈接中有)3. 直接到官網(wǎng)下載數(shù)據(jù)包。

    只要將下載的數(shù)據(jù)包復制到你的 Download Directory目錄下即可

    三、nltk使用

    用NLTK來實現(xiàn)文本信息提取的方法,包含4步:分詞,詞性標注,(分塊)命名實體識別,實體關系識別。

    分塊可以簡單的基于經(jīng)驗,使用正則表達式來匹配,也可以使用基于統(tǒng)計的分類算法來實現(xiàn),NLTK有提供基于正則的分塊器。

    nltk 不提供中文分詞。

    1、英文實體命名初體驗

    import sys import importlib importlib.reload(sys) import nltkarticle = "I came to Tsinghua University in Beijing" # 文章 tokens = nltk.word_tokenize(article) # 分詞 print("tokens",tokens) ''' tokens ['I', 'came', 'to', 'Tsinghua', 'University', 'in', 'Beijing'] '''tagged = nltk.pos_tag(tokens) # 詞性標注 print("tagged",tagged) ''' tagged [('I', 'PRP'), ('came', 'VBD'), ('to', 'TO'), ('Tsinghua', 'NNP'), ('University', 'NNP'), ('in', 'IN'), ('Beijing', 'NNP')] '''entities = nltk.chunk.ne_chunk(tagged) # 命名實體識別 print(entities) # 命名實體:確切的名詞短語,指特定類型的個體,如日期、人、組織等 ''' (SI/PRPcame/VBDto/TO(ORGANIZATION Tsinghua/NNP University/NNP)in/IN(GPE Beijing/NNP)) '''

    NLTK 采用的是賓州中文樹庫標記:

    2、使用nltk來處理中文資料

    nltk 目前只能比較好的處理英文和其他的一些拉丁語系。由于中文漢字一個挨一個,nltk不支持。

    所以可以采用其他分詞工具對中文語料進行處理,再使用nltk對其進行實體識別。

    分詞工具有很多,這里使用 結(jié)巴分詞。主頁有詳細介紹

    結(jié)巴分詞使用

    1、安裝

    pip install jieba

    2、使用:中文分詞初體驗

    # encoding=utf-8 import jiebajieba.enable_paddle() # 啟動paddle模式。 strs=["我來到北京清華大學","乒乓球拍賣完了","中國科學技術大學"] for str in strs:seg_list = jieba.cut(str,use_paddle=True) # 使用paddle模式print("Paddle Mode: " + '/'.join(list(seg_list)))seg_list = jieba.cut("我來到北京清華大學", cut_all=True) print("【全模式】: " + "/ ".join(seg_list))seg_list = jieba.cut("我來到北京清華大學", cut_all=False) print("【精確模式】: " + "/ ".join(seg_list))seg_list = jieba.cut("他來到了網(wǎng)易杭研大廈") print("【新詞識別】: "+", ".join(seg_list))seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國科學院計算所,后在日本京都大學深造") print("【搜索引擎模式】: "+", ".join(seg_list))''' Paddle Mode: 我/來到/北京清華大學 Paddle Mode: 乒乓球/拍賣/完/了 Paddle Mode: 中國科學技術大學【全模式】: 我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學 【精確模式】: 我/ 來到/ 北京/ 清華大學 【新詞識別】: 他, 來到, 了, 網(wǎng)易, 杭研, 大廈 【搜索引擎模式】: 小明, 碩士, 畢業(yè), 于, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, ,, 后, 在, 日本, 京都, 大學, 日本京都大學, 深造 '''

    這樣,把分詞的結(jié)果輸出到文件中,NLTK就可以拿來做實體識別了,比如下面:

    # encoding=utf-8 import sys import importlib importlib.reload(sys) import nltk# 上中文 tokens = nltk.word_tokenize("我 來到 北京 清華大學") # 分詞 print("tokens",tokens) tagged = nltk.pos_tag(tokens) # 詞性標注 print("tagged",tagged) entities = nltk.chunk.ne_chunk(tagged) # 命名實體識別 print(entities)''' tokens ['我', '來到', '北京', '清華大學'] tagged [('我', 'JJ'), ('來到', 'NNP'), ('北京', 'NNP'), ('清華大學', 'NN')] (S 我/JJ 來到/NNP 北京/NNP 清華大學/NN) '''

    參考資料:
    python的nltk中文使用和學習資料匯總幫你入門提高
    NLTK學習之四:文本信息抽取

    foolnltk 命名實體識別

    一、簡介

    foolnltk一個基于深度學習的中文分詞工具,具有以下特點:

    • 可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞
    • 基于 BiLSTM 模型訓練而成
    • 包含分詞,詞性標注,實體識別, 都有比較高的準確率
    • 用戶自定義詞典
    • 可以定制自己的模型

    有python版本和java版本,詳情請見

    二、python版本使用

    1、 安裝

    pip install foolnltk

    2、 使用

    #coding utf-8 import fool import os# 分詞 text = "我來到北京清華大學" print(fool.cut(text)) ''' [['我', '來到', '北京', '清華大學']] '''# 用戶自定義詞典 # 詞典格式格式如下,詞的權(quán)重越高,詞的長度越長就越越可能出現(xiàn), 權(quán)重值請大于 1 # 難受香菇 10 # 什么鬼 10 # 分詞工具 10 # 北京 10 # 北京天安門 10 fool.load_userdict(os.getcwd()+'\\mydictionary')# 詞性標注 print(fool.pos_cut(text)) ''' [[('我', 'r'), ('來到', 'v'), ('北京', 'ns'), ('清華大學', 'nt')]] '''# 實體識別 words, ners = fool.analysis(text) print(ners) ''' [[(3, 9, 'org', '北京清華大學')]] '''

    Ltp 實體命名識別

    一、簡介

    哈工大的LTP,免費使用但限流量,需要給錢才行

    LTP4文檔,啊!其實官方文檔里面已經(jīng)寫的清清楚楚了!

    這個也能支持用戶自定義詞典

    二、使用

    1、安裝

    pip install ltp

    2、使用

    import os from ltp import LTPltp = LTP() # 默認加載 Small 模型 # user_dict.txt 是詞典文件, max_window是最大前向分詞窗口 ltp.init_dict(path=os.getcwd()+'\\mydictionary', max_window=4)seg, hidden = ltp.seg(["馬云在1996年11月29日來到杭州的阿里巴巴公司。"]) # 分詞 print(seg) ''' [['馬云', '在', '1996年', '11月', '29日', '來到', '杭州', '的', '阿里巴巴', '公司', '。']] '''pos = ltp.pos(hidden) # 詞性標注 print(pos) ''' [['nh', 'p', 'nt', 'nt', 'nt', 'v', 'ns', 'u', 'nz', 'n', 'wp']] '''ner = ltp.ner(hidden) # 命名實體識別 tag, start, end = ner[0][0] print(ner) for tag, start, end in ner[0]:print(tag, ":", "".join(seg[0][start:end + 1])) ''' [[('Nh', 0, 0), ('Ns', 6, 6), ('Ni', 8, 9)]] Nh : 馬云 Ns : 杭州 Ni : 阿里巴巴公司 '''

    LTP 提供最基本的三種實體類型人名 Nh地名 Ns機構(gòu)名 Ni 的識別。

    LAC 實體命名

    LAC項目地址

    一、簡介

    LAC全稱Lexical Analysis of Chinese,是百度自然語言處理部研發(fā)的一款聯(lián)合的詞法分析工具,實現(xiàn)中文分詞、詞性標注、專名識別等功能。該工具具有以下特點與優(yōu)勢:

    • 效果好:通過深度學習模型聯(lián)合學習分詞、詞性標注、專名識別任務,詞語重要性,整體效果F1值超過0.91,詞性標注F1值超過0.94,專名識別F1值超過0.85,效果業(yè)內(nèi)領先。
    • 效率高:精簡模型參數(shù),結(jié)合Paddle預測庫的性能優(yōu)化,CPU單線程性能達800QPS,效率業(yè)內(nèi)領先。
    • 可定制:實現(xiàn)簡單可控的干預機制,精準匹配用戶詞典對模型進行干預。詞典支持長片段形式,使得干預更為精準。
    • 調(diào)用便捷支持一鍵安裝,同時提供了Python、Java和C++調(diào)用接口與調(diào)用示例,實現(xiàn)快速調(diào)用和集成。
    • 支持移動端: 定制超輕量級模型,體積僅為2M,主流千元手機單線程性能達200QPS,滿足大多數(shù)移動端應用的需求,同等體積量級效果業(yè)內(nèi)領先。

    二、python版本使用

    1、安裝

    pip install lac

    2、使用

    from LAC import LAC# 裝載LAC模型 lac = LAC(mode='lac')# 單個樣本輸入,輸入為Unicode編碼的字符串 text = u"馬云來到北京清華大學" lac_result = lac.run(text) print(lac_result) ''' [['馬云', '來到', '北京清華', '大學'], ['PER', 'v', 'ORG', 'n']] '''# 批量樣本輸入, 輸入為多個句子組成的list,平均速率更快 texts = [u"LAC是個優(yōu)秀的分詞工具", u"百度是一家高科技公司"] lac_result = lac.run(texts) print(lac_result) ''' [[['LAC', '是', '個', '優(yōu)秀', '的', '分詞', '工具'], ['nz', 'v', 'q', 'a', 'u', 'n', 'n']],[['百度', '是', '一家', '高科技', '公司'], ['ORG', 'v', 'm', 'n', 'n']]] '''

    控制臺輸出以上內(nèi)容,這個是初始化異常日志,不礙事,不喜歡的可以通過升級 paddlepaddle 版本到1.8以上 來關閉

    pip install paddlepaddle==1.8

    詞性和專業(yè)名詞類別:(專業(yè)名詞只能識別4種:人物、地名、機構(gòu)名、時間)

    BosonNLP 實體識別

    這個現(xiàn)在官方不給 SDK 的 tooken 了,所以不能用了,但是在線演示平臺挺絢麗的。

    bosonnlp的SDK文檔

    一、簡介

    BosonNLP實體識別引擎基于自主研發(fā)的結(jié)構(gòu)化信息抽取算法,F1分數(shù)達到81%,相比于StanfordNER高出7個百分點。通過對行業(yè)語料的進一步學習,可以達到更高的準確率。

    二、python版本使用

    1、安裝

    pip install bosonnlp

    2、使用

    from bosonnlp import BosonNLP import os nlp = BosonNLP(os.environ['BOSON_API_TOKEN']) nlp.ner('楊超越在1998年7月31日出生于江蘇省鹽城市大豐區(qū)。', sensitivity=2)

    Hanlp 實體識別

    pyhanlp 項目官方地址

    一、簡介

    HanLP是一系列模型與算法組成的NLP工具包,目標是普及自然語言處理在生產(chǎn)環(huán)境中的應用。HanLP具備功能完善、性能高效、架構(gòu)清晰、語料時新、可自定義的特點。內(nèi)部算法經(jīng)過工業(yè)界和學術界考驗。目前,基于深度學習的HanLP 2.0正處于alpha測試階段,未來將實現(xiàn)知識圖譜、問答系統(tǒng)、自動摘要、文本語義相似度、指代消解、三元組抽取、實體鏈接等功能。

    我們介紹的Pyhanlp是HanLP1.x的Python接口,支持自動下載與升級HanLP1.x,兼容py2、py3。

    二、python版本使用

    1、安裝

    安裝JDK

    JDK官方下載地址
    JDK的安裝與環(huán)境變量配置
    注意 保證JDK的位數(shù)、操作系統(tǒng)位數(shù)和Python位數(shù)一致。

    安裝Pyhanlp

    pip install pyhanlp

    2、使用

    # coding utf-8 import pyhanlp text = '楊超越在1998年7月31日出生于江蘇省鹽城市大豐區(qū)。' NLPTokenizer = pyhanlp.JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer') # 加載模型 NER = NLPTokenizer.segment(text) # 命名實體識別 print(NER) ''' [楊超越/nr, 在/p, 1998年7月31日/t, 出生/v, 于/p, 江蘇省鹽城市/ns, 大豐區(qū)/ns, 。/w] '''

    不像前面介紹的幾個工具可以直接獲得實體,hanlp需要從詞性標注里面提取實體,
    人名nr、地名ns、機名nt、時間t。

    總結(jié)

    以上是生活随笔為你收集整理的中文实体命名识别工具使用汇总:Stanza、LAC、Ltp、Hanlp、foolnltk、NLTK、BosonNLP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。