- NLTKまたは正規表現を使用して分割する必要がありますか?
- 代名詞(彼/彼女)の選択をどのように行うことができますか。代名詞のある文を選びたい。
これはより大きなプロジェクトの一部であり、私はPythonを初めて使用します。役立つコードを教えていただけますか?
NLTKはあなたの最善の策です。入力として文の文字列を指定すると、次のようにして代名詞を含む文のリストを取得できます。
from nltk import pos_tag, sent_tokenize, word_tokenize
paragraph = "This is a sentence with no pronouns. Take it or leave it."
print [sentence for sentence in sent_tokenize(paragraph)
if 'PRP' in {pos for _,pos in pos_tag(word_tokenize(sentence))}]
戻り値:
['Take it or leave it.']
基本的に、文字列を文のリストに分割し、それらの文を単語のリストに分割し、各文の単語のリストを品詞タグのセットに変換します(そうでない場合、複数ある場合は重要です。文中の代名詞、重複した文を取得します)。
私は同様のニーズを持つNLPプロジェクトに取り組んでいます。NLTKを使用すると、作業が非常に簡単になり、柔軟性が大幅に向上するため、NLTKを使用することをお勧めします。代名詞を持つすべての文を収集する必要があるため、テキスト内のすべての文を分割してリストに保持することができます。次に、リストを繰り返し処理して、代名詞を含む文を探すことができます。また、(リスト内の)文のインデックスを書き留めておくか、新しいリストを作成することもできます。
以下のサンプルコード:
from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag
sentences = ['alice loves to read crime novels.', 'she also loves to play chess with him']
sentences_with_pronouns = []
for sentence in sentences:
words = word_tokenize(sentence)
for word in words:
word_pos = pos_tag([word])
if word_pos[0][1] == 'PRP':
sentences_with_pronouns.append(sentence)
break
print sentences_with_pronouns
出力:
['she also loves to play chess.']
PSまた、非常に便利なNLPpythonパッケージであるpyluceneおよびwhooshライブラリも確認してください。