NLTKを使用してテキスト内の単語を検索しています。一致関数の結果をリストに保存する必要があります。質問はすでにhere と尋ねられますが、私は変更を見ることができません。NLTKの一致結果をリストに保存するにはどうすればよいですか?
type(text.concordance('myword'))
結果ました:私はによって機能のreturnde値の型を探してみてください
<class 'NoneType'>
NLTKを使用してテキスト内の単語を検索しています。一致関数の結果をリストに保存する必要があります。質問はすでにhere と尋ねられますが、私は変更を見ることができません。NLTKの一致結果をリストに保存するにはどうすればよいですか?
type(text.concordance('myword'))
結果ました:私はによって機能のreturnde値の型を探してみてください
<class 'NoneType'>
ConcordanceIndex
のソースを調べると、結果がstdoutに出力されていることがわかります。 redirecting stdout to a fileがオプションでない場合は、ConcordanceIndex.print_concordance
を再実装して、stdoutに出力するのではなく結果を返すようにする必要があります。
コード:
def concordance(ci, word, width=75, lines=25):
"""
Rewrite of nltk.text.ConcordanceIndex.print_concordance that returns results
instead of printing them.
See:
http://www.nltk.org/api/nltk.html#nltk.text.ConcordanceIndex.print_concordance
"""
half_width = (width - len(word) - 2) // 2
context = width // 4 # approx number of words of context
results = []
offsets = ci.offsets(word)
if offsets:
lines = min(lines, len(offsets))
for i in offsets:
if lines <= 0:
break
left = (' ' * half_width +
' '.join(ci._tokens[i-context:i]))
right = ' '.join(ci._tokens[i+1:i+context])
left = left[-half_width:]
right = right[:half_width]
results.append('%s %s %s' % (left, ci._tokens[i], right))
lines -= 1
return results
使用法:[パイソンの
from nltk.book import text1
from nltk.text import ConcordanceIndex
ci = ConcordanceIndex(text1.tokens)
results = concordance(ci, 'circumstances')
print(type(results))
<class 'list'>
この機能は人々がNLTKで見たいと思うものですか?もしそうなら、https://github.com/nltk/nltk/pull/1333にいくつかの愛を与えてください。これを適切なnltk関数に押し込むことができるかどうかがわかります。 – alvas
は、テキストの一致を使用するには、NLTK Text()
オブジェクトをインスタンス化してからconcordance()
メソッドを使用する必要がありますそのオブジェクト上:ここ
import nltk.corpus
from nltk.text import Text
moby = Text(nltk.corpus.gutenberg.words('melville-moby_dick.txt'))
は、我々はテキストファイルmelville-moby_dick.txt
上のテキストオブジェクトをインスタンス化し、我々はこの方法を使用することができます:
moby.concordance("monster")
あなたがここに非型を持っている場合、それはあなたがどんなText
オブジェクトを作成していなかったので、自分の変数text
がNone
であるためであるとseeems。
完全なコードは書きませんでしたが、テキストはNLTK Textオブジェクトでした。私はconcordanceメソッドの戻り値の型をチェックするこのコード行を投稿します – samara
が重複する可能性:テキストファイルへの出力をキャプチャする方法? (現在は530行のうち25行しかキャプチャされていません)](https://stackoverflow.com/questions/11044072/python-how-to-capture-output-to-a-text-file-only-25-of-530-lines -captured-now) –
私はこの投稿を見ましたが、私はファイルを渡すのを避けることを好む。 – samara
コンコードはstdoutでしかキャプチャできませんが、コンコーダンスを保存する方法はありませんが、PRはあります:https://github.com/nltk/nltk/pull/1333 – alvas