コンコーダンスを使用して、テキスト内の単語またはフレーズのインスタンスを検索し、見つかった単語/フレーズを辞書で探して、対応する値を返したいと考えています。ここに私がこれまでに持っているコードがあります。
from __future__ import division
import nltk, re, pprint
OutFileName = "shark_uri.txt"
OutFile = open(OutFileName, 'w')
book1 = open('shark_test.txt', 'rU').read()
token1 = nltk.word_tokenize(book1)
text1 = nltk.Text(token1)
LineNumber = 0
for k, v in bio_dict.iteritems():
text1.concordance(k)
#if k is found then print v, else go on to next k
if k #is found:
OutFile.write(v)
OutFile.write('\n')
LineNumber += 1
else
LineNumber += 1
OutFile.close()
このコードは、shark_test.txt ファイル内のサメに関する段落を読み取る必要があります。bio_dict には、このようなキーと値のペアが含まれています
'ovoviviparous':'http://dbpedia.org/resource/Ovoviviparity',
'predator':'http://dbpedia.org/resource/Predation',
キーは、プログラムが探している単語またはフレーズを表します。値は、単語/フレーズに対応する DBpedia URI です。「捕食者」のような単語がテキストで見つかった場合、プログラムは Predation の DBpedia URI を返すという考え方です。私は多くの奇妙な結果を得てきました.kがvを返すことがわかった場合、次のkに行くことをプログラムに伝える必要があるからだと思います。このためのプレースホルダーを上記のコード ブロックに入れました。Pythonでこれを表現する方法がよくわかりません。k == True の場合のようなものでしょうか? この条件がないと、キーが見つかったかどうかに関係なく、すべての値を出力する辞書を調べているように見えます。何かアドバイス?前もって感謝します。