【问题标题】:bad tokenization in stanford postaggerstanford postagger 中的错误标记化
【发布时间】:2015-07-14 07:58:57
【问题描述】:

我正在尝试使用 Stanford POS 标记器来标记一些法语文本。为此,我使用以下命令:

猫文件.txt | java -mx10000m -cp 'stanford-postagger.jar:' edu.stanford.nlp.tagger.maxent.MaxentTagger-模型 models/french.tagger -sentenceDelimiter newline > output.txt

(每行一个句子。)

但我注意到标签非常糟糕,真正的问题实际上来自法语标记化本身。我认为分词是由英文分词器完成的。

所以我尝试通过这样做只用法语标记文本:

猫文件.txt | java -mx10000m -cp 'stanford-postagger.jar:' edu.stanford.nlp.international.french.process.FrenchTokenizer -sentenceDelimiter 换行符 > tokenized.txt

法国的代币也不错。

如何告诉标注器使用法语模型进行标注,同时还要使用法语分词器?

【问题讨论】:

  • 您是否仅限于命令行使用,或者您可以为此编写一个 Java 类?
  • 我更喜欢命令行使用,或者可以从 python 调用的命令。

标签: nlp tokenize stanford-nlp pos-tagger


【解决方案1】:

您可以使用-tokenizerFactory-tokenizerOptions 标志来控制标记化。 javadoc for MaxentTagger 的“从命令行进行标记和测试”部分包含可用选项的完整列表。

我相信下面的命令会做你想做的事:

java -mx10000m -cp 'stanford-postagger.jar:' \
  edu.stanford.nlp.tagger.maxent.MaxentTagger \
  -model models/french.tagger \
  -tokenizerFactory 'edu.stanford.nlp.international.french.process.FrenchTokenizer$FrenchTokenizerFactory' \
  -sentenceDelimiter newline

【讨论】:

  • 当我尝试这个时,我收到以下错误消息:“无法加载标记器工厂”,然后是“原因:java.lang.NoSuchMethodException:edu.stanford.nlp.international.french.process .FrenchTokenizer.newTokenizerFactory()"
  • 通读代码,看起来文档具有误导性。你需要-tokenizerFactory edu.stanford.nlp.international.french.process.FrenchTokenizer.FrenchTokenizerFactory
  • 不,因为现在我得到一个“java.lang.ClassNotFoundException”。实际上,仅提供默认选项“edu.stanford.nlp.process.PTBTokenizer”就会产生错误...
  • 好的,我编辑了答案以使用'edu.stanford.nlp.international.french.process.FrenchTokenizer$FrenchTokenizerFactory',这对我有用。
  • 我查看了创建标记器的代码以了解其实际工作原理:github.com/stanfordnlp/CoreNLP/blob/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多