首页 文章

从给定文本中提取英语动词[关闭]

提问于
浏览
8

我需要从给定的文本中提取所有英语动词,我想知道我是如何做到的......乍一看,我的想法是使用正则表达式,因为所有英语动词时态都遵循模式,但也许有另一种方法可以做到这一点 . 我的想法很简单:

  • 为每个动词时态创建一个模式 . 我必须以某种方式区分常规动词(http://en.wikipedia.org/wiki/English_verbs)和不规则动词(http://www.chompchomp.com/rules/irregularrules01.htm) .

  • 迭代这些模式并使用它们分割文本(每个子字符串的最后一个单词应该是赋予句子完整含义的动词,我需要用于其他目的 - >名义化)

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

先感谢您!

PS:

  • 我有两本词典,一本用于所有英语动词,另一本用于所有英语名词

  • 所有这一切的主要问题在于项目包含动词名词化(只是一个单项目),所以"effort"应该集中在这个部分,名词化 . 具体来说,我遵循这个模型:acl.ldc.upenn.edu/P/P00/P00-1037.pdf) . 该项目包括给定文本,查找该文本中的所有动词,并为每个动词提出多个名词化 . 所以第一步(找到动词)应该尽可能简单......但是我不能允许这样做

4 回答

  • 0

    Parsing natural language with regex is impossible. Forget it.

    作为一个激烈的例子:你如何在这句话中找到动词(用星号标记)?

    布法罗水牛布法罗水牛水牛水牛水牛水牛

    虽然你很难遇到像这样的极端情况,但是如果你只看这个词的话,还有几十个动词也可以是名词,形容词等 .

    你需要一个像Stanford NLP这样的自然语言解析器 . 我从来没有使用过,所以我不知道你的结果会有多好,但是比Regex更好,我可以告诉你 .

  • 4

    Part of Speech tagger

    使用Part-of-Speech (POS) tagger识别并提取文本中的所有动词是 very easy . 这些标记符标记文本中的所有单词,其中包含词性标记,表明它们是动词,名词,形容词,副词等 . 现代POS标记器非常准确 . 例如,Toutanova等 . 2003年报道了斯坦福在新闻专线数据上的开源POS标签 assigns the correct tag 97.24% of time .

    Performing POS tagging

    Java 如果你正在使用Java,那么一个很好的POS标签包就是Stanford Log-linear Part-Of-Speech Tagger . Matthew Jockers汇总了一个关于使用这个tagger的好教程,你可以找到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标记的标记将是元组的数组,其中每个元组中的第一个条目是标记单词的标识,第二个条目是单词的POS标记,例如,对于 pos_tagged_tokens 上方的代码段,将设置为:

    [('I', 'PRP'), ('am', 'VBP'), ('very', 'RB'), ('happy', 'JJ'), ('to', 'TO'), 
     ('be', 'VB'), ('here', 'RB'), ('today', 'NN')]
    

    Understanding the Tag Set

    Stanford POS标记器和NLTK都使用Penn Treebank tag set . 如果您只想提取动词,请提取所有具有以"V"开头的POS标记的单词(例如,VB,VBD,VBG,VBN,VBP和VBZ) .

  • 0

    这在NLP(自然语言处理)中实际上是一项非常艰巨的任务 . 那里的正则表达式是不够的 . 以“训练”这个词为例 - 它可以用作动词或名词(“我要参加训练课程”) . 显然,正则表达式无法区分两者之间的区别 . 也存在问题,“-ed”是结束紧张动词的常用方法,但在“厌恶”的情况下会使你失败 .

    有些技术可以为你提供一个好的(不完美的,但很好的)指示给定的单词是否是一个动词 - 它们在计算上也可能非常昂贵 .

    因此,您应该问自己(在我看来)的第一个问题是答案的质量与您感兴趣的处理时间 .

  • 13

    虽然一年后,但我发现西北大学的一个非常有用的工具叫做MorphAdorner .

    它处理各种情况,例如词形还原,语言识别,名称识别,解析器,句子分割器等 .

    方便易用 .

相关问题