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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

哈工大中文分词系统ltp4j使用总结

發布時間:2023/12/10 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哈工大中文分词系统ltp4j使用总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

哈工大中文分詞系統ltp4j使用總結

  • github地址
  • 編譯文件及模型下載
  • maven install
  • 項目引入
    • 1、添加maven依賴
    • 2、指定jar包的library_path
  • 基本使用
    • 1、工具類
    • 2、詞性標注自定義詞典引入

github地址

項目地址: https://github.com/HIT-SCIR/ltp4j
簡介與使用: https://ltp4j.readthedocs.io/en/neoltp4j/
分詞標注集附錄: 鏈接

編譯文件及模型下載

編譯文件:https://pan.baidu.com/s/1yA6XGAbNcxnlIXbD9oSJyQ 提取碼: 6976
模型文件:https://pan.baidu.com/s/1qraizxtxJ3vEi6rfdLVjcw 提取碼: pduz

maven install

# maven坐標 <dependency><groupId>edu.hit.ir.ltp4j</groupId><artifactId>ltp4j</artifactId><version>0.1.0-SNAPSHOT</version> </dependency># 相應的,根據坐標按下列命令安裝(jar包的位置改成自己的,其他不變) mvn install:install-file -Dfile=D:\LTP\ltp4j\target\ltp4j-0.1.0-SNAPSHOT.jar -DgroupId=edu.hit.ir.ltp4j -DartifactId=ltp4j -Dversion=0.1.0-SNAPSHOT -Dpackaging=jar

項目引入

1、添加maven依賴

2、指定jar包的library_path

因為ltp是用C++寫的,這里只是整合成了java的native方法,不指定library_path找不到動態鏈接庫,接著會報ClassNotFoundException錯誤,無法加載該類。如果實在不想指定library_path,也可將動態鏈接庫文件復制到“類路徑”下,如jre的bin、本機的System32等都可以被成功加載。

基本使用

1、工具類

/*** @author shkstart* @create 2020-07-26 13:45*/ public class LtpUtil {private static final Logger logger = LoggerFactory.getLogger(LtpUtil.class);private static String MODEL_PATH = "D:/LTP/ltp_data/";private static Segmentor segmentor;private static Postagger postagger;private static NER ner;private static Parser parser;private static SRL srl;/*** 分詞* @param sentence* @return*/public static List<String> executeSegmentors(String sentence){if (segmentor == null){segmentor = new Segmentor();}// 加載模型if (segmentor.create(MODEL_PATH + "cws.model") < 0){logger.error("segmentor load failed !");return null;}List<String> words = new ArrayList<>();// 執行分詞segmentor.segment(sentence, words);return words;}/*** 詞性標注* @param words* @return*/public static List<String> executePostags(List<String> words){if (postagger == null){postagger = new Postagger();}// 加載詞性標注模型if(postagger.create(MODEL_PATH + "pos.model", MODEL_PATH + "lexicon.txt") < 0) {logger.error("postagger load failed !");return null;}List<String> postags = new ArrayList<>();// 執行詞性標注postagger.postag(words, postags);return postags;}/*** 命名實體識別* @param words* @param tags* @return*/public static List<String> executeNer(List<String> words, List<String> tags){if (ner == null){ner = new NER();}// 加載命名實體識別模型if(ner.create(MODEL_PATH + "ner.model") < 0) {logger.error("ner load failed !");return null;}List<String> ners = new ArrayList<>();ner.recognize(words, tags, ners);return ners;}/*** 依存句法分析* @param words* @param tags* @return*/public static Map<String, List> executeParser(List<String> words, List<String> tags){if (parser == null){parser = new Parser();}// 加載命名實體識別模型if(parser.create(MODEL_PATH + "parser.model") < 0) {logger.error("parser load failed !");return null;}List<Integer> heads = new ArrayList<Integer>();List<String> deprels = new ArrayList<String>();parser.parse(words,tags,heads,deprels);Map<String, List> map = new HashMap(2);map.put("heads", heads);map.put("deprels", deprels);return map;}/*** 語義角色標注* @param words* @param tags* @param ners* @param heads* @param deprels* @return*/public List<Pair<Integer, List<Pair<String, Pair<Integer, Integer>>>>> executeSrl(List<String> words, List<String> tags, List<String> ners, List<Integer> heads, List<String> deprels ){if (srl == null){srl = new SRL();}// 加載命名實體識別模型if(srl.create(MODEL_PATH + "srl.model") < 0) {logger.error("srl load failed !");return null;}List<Pair<Integer, List<Pair<String, Pair<Integer, Integer>>>>> srls =new ArrayList<Pair<Integer, List<Pair<String, Pair<Integer, Integer>>>>>();srl.srl(words, tags, ners, heads, deprels, srls);return srls;}public static void releaseSegmentor(){segmentor.release();}public static void releasePostags(){postagger.release();}public static void releaseNer(){ner.release();}public static void releaseParser(){parser.release();}public static void releaseSrl(){srl.release();}}

2、詞性標注自定義詞典引入

... // 加載詞性標注模型 if(postagger.create(MODEL_PATH + "pos.model", MODEL_PATH + "lexicon.txt") < 0) {logger.error("postagger load failed !");return null;}...

lexiconPath參數指定的外部詞典文件樣例如下所示。每行指定一個詞,第一列指定單詞,第二列之后指定該詞的候選詞性(可以有多項,每一項占一列),列與列之間用空格區分:

脫坑 v n

總結

以上是生活随笔為你收集整理的哈工大中文分词系统ltp4j使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。