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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1256閲覧

テキストファイルをmecab-ipadic-neologdを使って分かち書きし、動詞と形容詞だけをテキストファイルに出力したい

nanu1129

総合スコア13

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/21 04:20

前提・実現したいこと

テキストファイルをmecab-ipadic-neologdを使って形態素解析し、動詞と形容詞だけを抜き出し、テキストファイルに出力。

発生している問題・エラーメッセージ

このコードは青空文庫のものに対しては対応しているが、普通のテキストファイルには適していない。

該当のソースコード

Python

ソースコード
import MeCab
import re

bindata = open('ningen_shikkaku.txt', 'rb').read()
textdata = bindata.decode('shift_jis')

textdata = re.split(r'-{5,}', textdata)[2]
textdata = re.split(r'底本:', textdata)[0]
textdata = textdata.strip()

mecab = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
mecab.parse('')
results = []
lines = textdata.split("\r\n")
for line in lines:
r = []
s = line
s = s.replace("|", "")
s = re.sub(r'《.+?》', "", s)
s = re.sub(r'[.+?]', '', s)

node = mecab.parseToNode(s) while node: if node.feature.split(",")[6] == '*': word = node.surface else: word = node.feature.split(",")[6] part = node.feature.split(",")[0] if part in ["形容詞", "動詞"]: r.append(word) node = node.next rl = (" ".join(r)).strip() results.append(rl)

w_file = "ningen_result.txt"
with open(w_file, 'w', encoding='utf-8') as wf:
wf.write("\n".join(results))

試したこと

textdataという部分をなくし、テキストファイルがそのままlinesに入るようにしてみたがだめだった。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

hayataka2049

2018/12/21 05:06

現状だとインデントが潰れたりしてコードが読めないので、https://teratail.com/tour を参考にコード部分をシンタックスハイライト・マークダウンで囲うなどしてください。 そのコードは自分で書いたコードではないのでしょうか。出典があるなら示してください。また、試したことはできるだけ詳しく書きましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問