gpt4 book ai didi

java - 使用 CoreNLP 单独标记和后标记

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:09 25 4
gpt4 key购买 nike

我对 Stanford CoreNLP 将文本分成句子的方式几乎没有问题,即:

  1. 治疗!和 ? (感叹号和问号)在引用的文本中作为句子的结尾,在它不应该的地方,例如:他喊道“爱丽丝!爱丽丝!” - 在这里它对待!在第一个爱丽丝作为句子结束并将文本分成两个句子之后。
  2. 它不会将省略号识别为句子结尾。

在 NLTK 中,我们将通过简单地在分割成句子之前和之后对文本进行归一化来处理这些问题,也就是说,在分割之前用其他符号替换所述标记,然后将它们以适当的形式发送到管道中。

但是,CoreNLP 中的分词器会在分成句子之前进行分词,因此没有太多空间来调整该过程。因此,我的第一个问题是:是否可以在不重写分词器的情况下“更正”分词器以解决此类情况?

如果不是,我们是否可以至少将标记化与管道的其余部分分开(在我的例子中是 pos、引理和解析),以便我们可以在进一步向下发送之前更改标记本身?

谢谢!

最佳答案

在我看来,您最好将标记化阶段与其他下游任务分开(所以我基​​本上是在回答问题 2)。您有两个选择:

  1. 使用 Stanford 分词器进行分词(示例来自 Stanford CoreNLP 使用页面)。在您的情况下,注释器选项应该只采用“tokenizer”。

    java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -file input.txt

    完成此操作后,您可以要求其他模块不要标记您的输入。例如,斯坦福解析器有一个命令行标志 (-tokenized),您可以设置它来指示您的输入已经被标记化。

  2. 使用不同的分词器(例如 NLTK)进行分词,并按照 1 的第二部分进行操作。

事实上,如果您使用任何外部工具将文本拆分为句子(基本上是您不想进一步拆分的 block ),您可以选择在 CoreNLP 工具中设置一个命令行标志,它不会尝试并拆分您的输入。同样对于 Stanford Parser,这是通过使用“-sentences newline”标志来完成的。如果您有可靠的句子检测器,这可能是最简单的事情。

关于java - 使用 CoreNLP 单独标记和后标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com