6

“我们要做的第一件事,就是杀了所有的律师。” -威廉莎士比亚

鉴于上面的引用,我想拔出"kill""lawyers"作为两个突出的关键词来描述句子的整体含义。我提取了以下名词/动词 POS 标签:

[["First", "NNP"], ["thing", "NN"], ["do", "VBP"], ["lets", "NNS"], ["kill", "VB"], ["lawyers", "NNS"]]

我试图解决的更普遍的问题是将一个句子提炼成“最重要的”*单词/标签,以总结一个句子的整体“意义”*。

*注意吓人的引号。我承认这是一个非常困难的问题,目前很可能没有完美的解决方案。尽管如此,我有兴趣看到解决特定问题(提取"kill""lawyers")和一般问题(总结关键字/标签中句子的整体含义)的尝试

4

3 回答 3

3
于 2012-07-13T02:10:16.037 回答
2

一种简单的方法是保留NN、VB 等的停用词列表。这些是高频词,通常不会给句子添加太多语义内容。

下面的代码片段显示了每种单词标记的不同列表,但您也可以为动词和名词使用一个停用词列表(例如这个)。

stop_words = dict(
    NNP=['first', 'second'],
    NN=['thing'],
    VBP=['do','done'],
    VB=[],
    NNS=['lets', 'things'],
)


def filter_stop_words(pos_list):
    return [[token, token_type] 
            for token, token_type in pos_list 
            if token.lower() not in stop_words[token_type]]
于 2012-07-10T05:06:50.063 回答
2

在你的情况下,你可以简单地使用Python 的Rake(感谢 Fabian)包来获得你需要的东西:

>>> path = #your path 
>>> r = RAKE.Rake(path)
>>> r.run("First thing we do, let's kill all the lawyers")
[('lawyers', 1.0), ('kill', 1.0), ('thing', 1.0)]

例如,路径可以是这个文件。

但总的来说,你最好使用 NLTK 包来进行 NLP 用法

于 2016-10-18T11:21:17.080 回答