如何从我的文本中删除动词、介词、连词等?

15
基本上,在我的文本中,我只想保留名词并删除其他词性。 我认为没有任何自动化的方法可以做到这一点。如果有,请建议。 如果没有自动化的方式,我也可以手动完成,但这需要我获得所有可能的动词、介词、连词或形容词等列表。请问有哪些可能的来源可以提供这些特定的列表?

1
自然语言处理是一门科学领域,有很多工具可以用于自动化处理流行语言如英语。对于Python,你可以使用下面回答中提到的http://www.nltk.org/。 - msvalkon
2个回答

41
你可以使用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')]

在您的情况下,您需要保留所有以N开头的标签元素,即所有名词,并将其余部分丢弃。请查看完整的标签列表;您可能还想包括外来语(FW),例如。
NLTK是免费使用的,并且它自带免费的数据集。您不需要自己构建介词列表等内容。

7
如果您是第一次这样做,需要使用 nltk.download('punkt') 使 word_tokenize 起作用,以及使用 nltk.download('averaged_perceptron_tagger') 使 pos_tag 起作用。 - Sohaib Farooqi

1
在手动端。
Wiktionary转储。

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

我希望你能开始学习。这个列表比其他很多列表都更加复杂,但它比我用过的任何其他自然语言处理工具都更加丰富。祝你好运,并注意Unicode编码!


2
这个链接需要更新 - 它会显示404错误。 - kloddant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接