gpt4 book ai didi

GoLang PoS Tagger 脚本花费的时间比终端没有输出的时间长

转载 作者:IT王子 更新时间:2023-10-29 02:26:04 24 4
gpt4 key购买 nike

此脚本在 play.golang.org 中编译时没有错误:http://play.golang.org/p/Hlr-IAc_1f

但是当我在我的机器上运行时,发生的时间比我预期的要长得多,但终端什么也没发生。

我正在尝试构建的是一个 PartOfSpeech 标注器。

我认为最长的部分是将 lexicon.txt 加载到 map 中,然后将每个单词与那里的每个单词进行比较,看看它是否已经在词典中被标记。词典只包含动词。但是不是每个单词都需要检查它是否是动词。

更大的问题是我不知道如何用副词、形容词等简单的启发式方法来确定一个词是否是动词。

最佳答案

(引用):

I don't know how to determine if a word is a verb with an easy heuristic like adverbs, adjectives, etc.

我不能谈论您的 Go 实现中的任何问题,但我会解决一般的 POS 标记的更大问题。听起来您正在尝试构建基于规则的 unigram 标记器。详细说明这些术语:

  • “unigram”表示您要分别考虑句子中的每个单词。请注意,unigram 标记器本质上是有限的,因为它不能消除可以采用多个 POS 标记的单词的歧义。例如,你应该将“fish”标记为名词还是动词? last是动词还是副词?
  • “基于规则”顾名思义:一组规则来确定每个词的标签。基于规则的标记以不同的方式受到限制——它需要大量的开发工作来组装一个规则集,该规则集将处理通用语言中合理部分的歧义。如果您使用的语言我们没有良好的培训资源,那么这项工作可能是合适的,但对于大多数常见语言,我们现在有足够的标记文本来训练高精度标记模型。

最先进的 POS 标记在格式良好的新闻专线文本上的准确率超过 97%(在不太正式的类型上准确率自然较低)。基于规则的标注器的性能可能会差很多(您必须确定满足您的要求所需的准确度级别)。如果您想继续沿着基于规则的道路前进,我建议您阅读 this tutorial .该代码基于 Haskell,但它将帮助您了解基于规则的标记中的概念和问题。

也就是说,我强烈建议您查看其他标记方法。我提到了 unigram 标记的弱点。相关的方法是'bigram',这意味着我们在标记单词n时考虑前一个词,'trigram'(通常是前2个词,或前一个词,当前词和后一个词);更一般地说,“n-gram”指的是考虑 n 个单词的序列(通常是围绕我们当前标记的单词的滑动窗口)。该上下文可以帮助我们消除“鱼”、“最后”、“苍蝇”等的歧义。

例如,在

We fish

我们可能想将 fish 标记为动词,而在

ate fish

当然是名词。

The NLTK tutorial在这里可能是一个很好的引用。可靠的 n-gram 标注器应该可以让你达到 90% 以上的准确率;可能高于 95%(同样在新闻专线文本中)。

更复杂的方法(称为“结构化推理”)将整个标签序列视为一个整体。也就是说,他们不是尝试分别为每个单词预测最可能的标签,而是尝试为整个输入序列预测最可能的标签序列。结构化推理当然更难实现和训练,但与 n-gram 方法相比通常会提高准确性。如果您想阅读这方面的内容,我建议 Sutton and McCallum's excellent introduction .

关于GoLang PoS Tagger 脚本花费的时间比终端没有输出的时间长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23319311/

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