从句子中提取python nltk关键字

wai*_*ani 5 python nlp nltk

"我们做的第一件事就是杀死所有的律师." - 威廉莎士比亚

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

[["First", "NNP"], ["thing", "NN"], ["do", "VBP"], ["lets", "NNS"], ["kill", "VB"], ["lawyers", "NNS"]]
Run Code Online (Sandbox Code Playgroud)

我试图解决的更普遍的问题是将句子提炼为"最重要的"*单词/标签,以概括句子的整体"含义"*.

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

Chr*_*est 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]]
Run Code Online (Sandbox Code Playgroud)