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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java opennlp_OpenNLP中语言检测模型训练和模型的使用

發布時間:2024/9/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java opennlp_OpenNLP中语言检测模型训练和模型的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為項目的原因,需要使用到NLP的相關技術。語言檢測模型cld3是python要與項目集成也不太方便,后來找到OpenNLP,發現它相對來說,對于亞洲的語言有一些支持。

下面是OpenNLP的訓練相關的東西,在項目里如果檢測對象過短,對于檢測結果也容易出現偏差的情況。所以語料要充足。

一 、文檔準備

我們先從文檔入手,在官網上的文檔是很規范的,先找到Language Detector這個title,然后往下看到training,我們根據文檔提示,發現其實我們的語料按照如下規范就可以

注意幾點:

1.文本文件中的一行就是一條語料,第一列是語種對應的ISO-639-3碼,第二列是tab縮進,第三列就是語料文本

2.對于長文本,不要人為的去加換行

3.訓練語料必須要有多個不同的語料信息,否則在訓練時會報錯

二 、模型訓練

有了以上的語料文件,就可以通過幾行簡單的代碼就能將其訓練成我們需要的語言檢測了

InputStreamFactory inputStreamFactory = new MarkableFileInputStreamFactory(new File("corpus.txt"));

ObjectStream lineStream = newPlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8);

ObjectStream sampleStream = newLanguageDetectorSampleStream(lineStream);

TrainingParameters params=ModelUtil.createDefaultTrainingParameters();

params.put(TrainingParameters.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE);

params.put(TrainingParameters.CUTOFF_PARAM,0);

LanguageDetectorFactory factory= newLanguageDetectorFactory();

LanguageDetectorModel model=LanguageDetectorME.train(sampleStream, params, factory);

model.serialize(new File("langdetect.bin"));

}

最后運行一下,就能在你的本地生成一個langdetect.bin的語料文件了,以后就在程序里用上就好了。

三、模型使用

public void langdetect() {

try (InputStream modelIn = new FileInputStream("/resources/langdetect.bin")) {

LanguageDetectorModel m = new LanguageDetectorModel(modelIn);

LanguageDetector languageDetectorME = new LanguageDetectorME(m);

Language bestLanguage = languageDetectorME.predictLanguage("測試語言嗅探器");

System.out.println("Best language: " + bestLanguage.getLang()); // 預測語言

System.out.println("Best language confidence: " + bestLanguage.getConfidence()); // 語言置信度

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

四、實驗結果

對多國語言進行訓練后的結果:

原始句子識別情況

長度限制后識別情況

opennlp重新訓練模型(括號為去掉對應語料內明顯是英文的句子)

opennlp(java)

cld3(python)

opennlp(java)

cld3(python)

opennlp(custom)

ar

71%

64%

100%

85%

100%

de

24%

35%

46%(修正83%)

33%

46%(修正91%)

en

63%

60%

80%

69%

93%

es

66%

66%

95%

94%

100%

fr

9%

12%

28%(修正58%)

28%

44%(修正85%)

it

44%

49%

54%

54%

85%

ja

100%

100%

100%

100%

100%

ms

65%

81%

77%

94%

0%

pl

78%

76%

83%

82%

84%

pt

88%

91%

90%

90%

94%

ru

17%

36%

31%

50%

100%

th

96%

100%

99%

100%

100%

tr

55%

17%

60%

44%

66%

zh

100%

100%

100%

100%

100%

整體

62%

57%

80%

76%

90.4%(未統計ms)

總結

以上是生活随笔為你收集整理的java opennlp_OpenNLP中语言检测模型训练和模型的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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