Closed. This question is off-topic。它当前不接受答案。












想要改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic

已关闭8年。



Improve this question




我需要从给定的文本中提取所有英语动词,我想知道我该怎么做...
乍一看,我的想法是使用正则表达式,因为所有英语动词时态都遵循模式,但也许还有另一种方式。我以为就是:
  • 为每个动词时态创建一个模式。我必须以某种方式区分常规动词(http://en.wikipedia.org/wiki/English_verbs)和不规则动词(http://www.chompchomp.com/rules/irregularrules01.htm)。
  • 遍历这些模式并使用它们拆分文本(每个子字符串的最后一个词应该是使句子具有完整含义的动词,我需要将其用于其他目的->名词化)

  • 你怎么看?我想这不是一种有效的方法,但我无法想象另一种方法。

    先感谢您!

    PS:
  • 我有两个词典,一个词典用于所有英语动词,另一个词典用于所有英语名词
  • 所有这一切的主要问题是该项目包括动词名词化(这只是一个uni项目),因此应该将所有“努力”都集中在名词化这一部分上。具体而言,我遵循以下模型:acl.ldc.upenn.edu/P/P00/P00-1037.pdf)。该项目包括给定一个文本,找到该文本中的所有动词,并为每个动词提议多个名词化。因此第一步(查找动词)应该尽可能简单...但是我不能使用任何解析器,不允许使用
  • 最佳答案

    语音标记工具

    使用Part-of-Speech (POS) tagger识别并提取文本中的所有动词非常容易。这样的标记器使用词性标记来标记文本中的所有单词,这些词性标记指示它们是否是动词,名词,形容词,副词等。现代POS标记器非常准确。例如,Toutanova等。 2003年报告称,斯坦福大学的开源POS标记器在Newswire数据上分配了正确标记的时间为97.24%。

    执行POS标记

    Java 如果使用Java,则Stanford Log-linear Part-Of-Speech Tagger是用于POS标记的一个很好的软件包。 Matthew Jockers撰写了有关使用此标记器的出色教程,您可以找到here

    Python 如果您喜欢Python,则可以使用Natural Language Toolkit (nltk)中包含的POS标记器。下面给出了演示如何使用此程序包执行POS标记的代码段:

    import nltk
    
    text = "I am very happy to be here today"
    tokens = nltk.word_tokenize(text)
    pos_tagged_tokens = nltk.pos_tag(tokens)
    

    生成的POS标记 token 将是一个元组数组,其中每个元组中的第一个条目是标记单词的身份,第二个条目是单词的POS标签,例如对于pos_tagged_tokens以上的代码段,将设置为:
    [('I', 'PRP'), ('am', 'VBP'), ('very', 'RB'), ('happy', 'JJ'), ('to', 'TO'),
     ('be', 'VB'), ('here', 'RB'), ('today', 'NN')]
    

    了解标记集

    斯坦福POS标记器和NLTK都使用Penn Treebank tag set。如果您只想提取动词,请拉出所有带有以“V”开头的POS标签的单词(例如,VB,VBD,VBG,VBN,VBP和VBZ)。

    10-07 19:17
    查看更多