web-dev-qa-db-ja.com

テキストから動詞、前置詞、接続詞などを削除するにはどうすればよいですか?

基本的に私のテキストでは、名詞を保持し、他の品詞を削除したいだけです。

これを自動化する方法はないと思います。ある場合は提案してください。

自動化された方法がない場合は、手動で行うこともできますが、そのためには、動詞、前置詞、接続詞、形容詞など、考えられるすべてのリストが必要になります。これらの特定のリストを入手できるソースを提案してください。

11
user3710832

[〜#〜] 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で始まるtaggedリストのすべての要素、つまりすべての名詞を保持し、残りを破棄します。 タグの完全なリスト ;をチェックしてください。たとえば、外国語(FW)を含めることもできます。

NLTKは無料で使用でき、独自のデータセットも無料で付属しています。前置詞などのリストを自分で作成する必要はありません。

29
Wander Nauta

手動側。

ウィクショナリーダンプ。

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

記事全体のダンプを任意のフレーバーでスキップし、要約を使用します。 Wordクラスが含まれています。頑張ってください、フォーマットは獣です。

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に気をつけてください。

1
blanket_cat