如何从文本中删除动词、介词、连词等? [关闭]
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
工作。以上是关于如何从文本中删除动词、介词、连词等? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章