<複数行の文章を読み込んで、共起を抽出したい>
pythonで文章が記載されたテキストファイルを読み込み、処理を使用としているのですが
何故か最初の1行目しか処理をしてくれません。
これを複数行でも処理してくれるようにしたいです。
python
1import nltk 2from pyknp import KNP 3import jctconv 4import re 5from nltk import word_tokenize 6 7# knpで形態素解析を行ったあとの結果をリストで返す 8def separate(text,option = '-tab'): 9 number_word = [] 10 tokens = [] 11 knp = KNP(option = option) 12 result = knp.parse(jctconv.h2z(text,digit = True)) 13 14 for mrph in result.mrph_list(): 15 if not mrph.hinsi == '助詞' and not mrph.hinsi == '助動詞' and not mrph.bunrui == '読点' and not mrph.bunrui == '句点': 16 tokens.append(mrph.midasi) 17 return tokens 18 19 20# 形態素解析を行った結果から、共起の結果を得る 21def word_cooccurrence(list,N): 22 ngram = nltk.ngrams(list,N) # N-グラムを作成(Nは指定) 23 fd = nltk.FreqDist(ngram) # バイグラムの出現頻度分布 24 return fd.items() 25 26 27if __name__ == '__main__': 28 with open('text.txt',encoding = 'utf8') as f: 29 text = f.read() 30 result = word_cooccurrence(separate(text),3) 31 print(result) 32 33<text.txtの中身> 34ポット内の温度が100℃より低い場合、水が沸騰しない。 35水が80℃になるまで、保温する。 36 37<実行結果> 38dict_items([(('ポット', '内', '温度'), 1), (('内', '温度', '100'), 1), (('温度', '100', '℃'), 1), (('100', '℃', '低い'), 1), (('℃', '低い', '場合'), 1), (('低い', '場合', '水'), 1), (('場合', '水', '沸騰'), 1), (('水', '沸騰', 'し'), 1), (('沸騰', 'し', 'ない'), 1), (('し', 'ない', '.'), 1)])
あなたの回答
tips
プレビュー