如何从文本中删除动词、介词、连词等? [关闭]

Posted

技术标签:

【中文标题】如何从文本中删除动词、介词、连词等? [关闭]【英文标题】:How do I remove verbs, prepositions, conjunctions etc from my text? [closed] 【发布时间】:2014-08-15 20:53:53 【问题描述】:

基本上,在我的文本中,我只想保留名词并删除其他词性。

我认为没有任何自动化的方法可以做到这一点。如果有请推荐。

如果没有自动方式,我也可以手动完成,但为此我需要列出所有可能的说法,动词或介词或连词或形容词等。有人可以建议我可以得到这些的可能来源具体列表。

【问题讨论】:

自然语言处理是一门科学领域,有很多工具可以用英语等流行语言自动处理。对于python,您可以使用nltk.org,如下面的答案所述。 【参考方案1】:

在手动结束。

维基词典。

https://dumps.wikimedia.org/enwiktionary/20140609/

我会跳过任何风格的完整文章转储,而直接使用摘要。它包含单词类。祝你好运,格式是一头野兽。

开始使用python:

import xml.etree.ElementTree as ET
wiktionary = file('/path/to/wiktionary.xml')
tree = ET.iterparse(wiktionary.xml)
for event, elem in tree:
    if elem.tag == your_target_tag:
        do magic

应该让你开始。

它比许多其他列表工作更多,但它比我用于 NLP 的任何其他列表都丰富得多。祝你好运,注意 unicode!

【讨论】:

此链接需要更新 - 它给出了 404 错误。【参考方案2】:

您可以使用NLTK 词性标注器来标注每个单词,然后只保留名词。这是 NLTK 标记器的示例,取自 NLTK 主页:

>>> import nltk
>>> sentence = """At eight o'clock on Thursday morning
... Arthur didn't feel very good."""
>>> tokens = nltk.word_tokenize(sentence)
>>> tokens
['At', 'eight', "o'clock", 'on', 'Thursday', 'morning',
'Arthur', 'did', "n't", 'feel', 'very', 'good', '.']
>>> tagged = nltk.pos_tag(tokens)
>>> tagged[0:6]
[('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'), ('on', 'IN'),
('Thursday', 'NNP'), ('morning', 'NN')]

在您的情况下,您将保留 tagged 列表中具有以 N 开头的标签的每个元素,即所有名词,并将其余部分丢弃。查看complete list of tags;例如,您可能还想包含外来词 (FW)。

NLTK 可以免费使用,它自带的数据集也是免费的。您不必自己构建介词列表等。

【讨论】:

如果您是第一次这样做,您需要使用nltk.download('punkt') 来让word_tokenize 工作,使用nltk.download('averaged_perceptron_tagger') 来让pos_tag 工作。

以上是关于如何从文本中删除动词、介词、连词等? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

英语词性-句子成分-构词法

三看 分析法之: 看动词,找宾语

英文语法分析树标注集

Stanford依存句法关系解释

英语语法

英语:词性动词