質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

181閲覧

nltkで複数行の文章を読み込みたい

syen2501

総合スコア38

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/06/26 08:22

<複数行の文章を読み込んで、共起を抽出したい>
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)])

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問