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

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

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

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

Mecab

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

Q&A

解決済

1回答

4034閲覧

mecab 品詞 選択

aoisj

総合スコア27

Python 3.x

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

Mecab

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

0グッド

1クリップ

投稿2017/09/11 04:21

編集2017/09/11 06:20

###やりたいこと
選択したテキストファイル内の文章をmecabを用いて形態素解析し、
品詞(名詞、動詞など)を絞り込みたいと考えています。
現在、テキストファイルの文章を形態素解析するところまでは実装ができたのですが、
品詞の絞り込み方を調べると長いコードしか見つからず、
どの部分で絞り込みが行われているのか分かりませんでした。
以下に実装途中のコードを記すのですが、私のコードの場合はどのように
実装するべきなのか、意見を頂きたいです。

実装途中のコード

# -*- coding: utf-8 -*- import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer import sys import MeCab #CountVectorizer():文書ごとの単語の出現頻度を取得 count = CountVectorizer() m = MeCab.Tagger ("-Ochasen") doc = input('select file(ex, ○○.txt):') f = open(doc, "r",encoding = "utf-8") text = f.read() f.close() """print(m.parse(text))""" #絞り込みの基準を設定 """level = float(input('set level(0.0 <= level <= 1.0):'))""" print('\n%s ↓\n' %doc)

コードには今回の質問とは無関係な部分があるのですが、
今後利用するものなので気にしないでください。

丸投げのような質問になってしまい申し訳ありません。

###実行環境
OS:ubuntu
言語:python3

###補足情報
参考にしようとしたサイト:
https://foolean.net/p/576

入力例:
text.txt

text.txtの中身:
コーヒーメーカー

植松眞人・作

私は知人との待ち合わせのために、どうしようもない喫茶店にいた。小さな傷が付きすぎて、曇りガラスのように見えるグラスに水をなみなみとつぐようなどうしようもない喫茶店の片隅で、どうしようもない男は、さらにどうしようもない話を続けていた。

・・・

絞り込みのルール:
形態素解析結果のうち、特定の品詞(今回は名詞と動詞)のみを抽出して表示

出力例:
コーヒー コーヒー コーヒー 名詞-一般
メーカー メーカー メーカー 名詞-一般
植松 ウエマツ 植松 名詞-固有名詞-人名-姓
眞人 マサト 眞人 名詞-固有名詞-人名-名
作 サク 作 名詞-一般
私 ワタシ 私 名詞-代名詞-一般
知人 チジン 知人 名詞-一般
待ち合わせ マチアワセ 待ち合わせ 名詞-一般
ため タメ ため 名詞-非自立-副詞可能
しよう シヨウ しよう 名詞-一般
喫茶店 キッサテン 喫茶店 名詞-一般
い イ いる 動詞-自立 一段 連用形
傷 キズ 傷 名詞-一般
付き ツキ 付く 動詞-自立 五段・カ行イ音便 連用形
すぎ スギ すぎる 動詞-非自立 一段 連用形
曇り クモリ 曇る 動詞-自立 五段・ラ行 連用形
ガラス ガラス ガラス 名詞-一般
の ノ の 助詞-連体化
よう ヨウ よう 名詞-非自立-助動詞語幹
に ニ に 助詞-副詞化
見える ミエル 見える 動詞-自立 一段 基本形
グラス グラス グラス 名詞-一般
水 ミズ 水 名詞-一般
つぐ ツグ つぐ 動詞-自立 五段・ガ行 基本形
よう ヨウ よう 名詞-非自立-助動詞語幹
しよう シヨウ しよう 名詞-一般
喫茶店 キッサテン 喫茶店 名詞-一般
片隅 カタスミ 片隅 名詞-一般
しよう シヨウ しよう 名詞-一般
男 オトコ 男 名詞-一般
しよう シヨウ しよう 名詞-一般
話 ハナシ 話 名詞-サ変接続
続け ツヅケ 続ける 動詞-自立 一段 連用形
い イ いる 動詞-非自立 一段 連用形

###絞り込みのルールについての詳細
テキストファイル内の文章の内容のジャンル(スポーツ、恋愛、学校など)を分類できるようにしたいため、ジャンル分けの判断材料になりそうな名詞や動詞のみを抽出することで、より正確にジャンル分けを行うことができると考えています。

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

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

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

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

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

Tak1016

2017/09/11 04:31

タグにPythonつけたほうがいいです。
aoisj

2017/09/11 04:36

ご指摘ありがとうございます。
can110

2017/09/11 04:58

参考にされた「長いコード」の出典(URLなど)、および具体的でシンプルな入力と結果例を示してください。
aoisj

2017/09/11 05:20

参考にしようとしたコードは以下のURLに記載されています。 https://foolean.net/p/576 入力:テキストファイル名(例:text.txt) 出力: マンション マンション マンション 名詞-一般 の ノ の 助詞-連体化 エン エン エン 名詞-固有名詞-一般 トランス トランス トランス 名詞-一般 を ヲ を 助詞-格助詞-一般 出る デル 出る 動詞-自立 一段 基本形 とき トキ とき 名詞-非自立-副詞可能 に ニ に 助詞-格助詞-一般 、 、 、 記号-読点 曲がり角 マガリカド 曲がり角 名詞-一般 から カラ から 助詞-格助詞-一般 自転車 ジテンシャ 自転車 名詞-一般 の ノ の 助詞-連体化 ブレーキ ブレーキ ブレーキ 名詞-一般 の ノ の 助詞-連体化 音 オト 音 名詞-一般 が ガ が 助詞-格助詞-一般 聞こえ キコエ 聞こえる 動詞-自立 一段 連用形 た タ た 助動詞 特殊・タ 基本形 。 。 。 記号-句点
aoisj

2017/09/11 05:21

改行できませんでした。
aoisj

2017/09/11 05:21

出力は長くなってしまうため、一部のみ記載させていただきました。
can110

2017/09/11 05:23

この欄は不便なので、質問本文を修正(追記)ください。
can110

2017/09/11 05:36

入力例「text.txt」の内容と「絞り込み」のルール(品詞とは何か?)を明示ください。
can110

2017/09/11 05:57

入力例と結果例に食い違いがあるように見えます。また結果例は「名詞や動詞のみ」というルールにも合っていないようです。
can110

2017/09/11 05:58

重ねてお願いしますが、第三者が検証しやすいシンプルで具体的な例を示されると回答得られやすくなります。
aoisj

2017/09/11 06:02

結果例は私が実装したい出力結果ということでよろしいでしょうか?
can110

2017/09/11 06:07

はい。入力AをルールBで絞込み、結果Cを得たいの「A」「B」「C」を明確にするということです。
guest

回答1

0

ベストアンサー

基本的にはparse結果から品詞についての情報部分を抽出し「名詞」「動詞」などの文字列一致で絞込ができます。
どのような品詞で絞り込むとよい結果が得られるかはChaSen 品詞体系 (IPA品詞体系)などを見ながら試行錯誤は必要かと思います。

また、ジャンル分けするには、単語の表記ゆれをどう扱うか(テニス庭球)など、さらに考えないといけないことがありそうです。

Python

1import MeCab 2inp = """ 3コーヒーメーカー 4 5植松眞人・作 6 7私は知人との待ち合わせのために、どうしようもない喫茶店にいた。小さな傷が付きすぎて、曇りガラスのように見えるグラスに水をなみなみとつぐようなどうしようもない喫茶店の片隅で、どうしようもない男は、さらにどうしようもない話を続けていた。 8""" 9 10m = MeCab.Tagger('-Ochasen') 11chunks = m.parse(inp).splitlines() 12 13print('入力---') 14sels = [] # 絞り結果 15for chunk in chunks: 16 print(chunk) 17 cols = chunk.split('\t') # ['コーヒー','コーヒー','コーヒー','名詞-一般']や['EOS']など 18 if len(cols) >= 4: 19 parts = cols[3].split('-') # ['名詞','一般'] 20 if parts[0].startswith('名詞') or parts[0].startswith('動詞'): 21 sels.append(chunk) 22 23# 絞り結果 24print('絞り結果---') 25for sel in sels: 26 print(sel)

結果例

絞り結果--- コーヒー コーヒー コーヒー 名詞-一般 メーカー メーカー メーカー 名詞-一般 植松 ウエマツ 植松 名詞-固有名詞-人名-姓 眞人 マサト 眞人 名詞-固有名詞-人名-名 作 サク 作 名詞-接尾-一般 私 ワタシ 私 名詞-代名詞-一般 知人 チジン 知人 名詞-一般 待ち合わせ マチアワセ 待ち合わせ 名詞-一般 ため タメ ため 名詞-非自立-副詞可能 しよう シヨウ しよう 名詞-一般 喫茶店 キッサテン 喫茶店 名詞-一般 い イ いる 動詞-自立 一段 連用形 傷 キズ 傷 名詞-一般 付き ツキ 付く 動詞-自立 五段・カ行イ音便 連用形 すぎ スギ すぎる 動詞-非自立 一段 連用形 曇り クモリ 曇る 動詞-自立 五段・ラ行 連用形 ガラス ガラス ガラス 名詞-一般 よう ヨウ よう 名詞-非自立-助動詞語幹 見える ミエル 見える 動詞-自立 一段 基本形 グラス グラス グラス 名詞-一般 水 ミズ 水 名詞-一般 つぐ ツグ つぐ 動詞-自立 五段・ガ行 基本形 よう ヨウ よう 名詞-非自立-助動詞語幹 しよう シヨウ しよう 名詞-一般 喫茶店 キッサテン 喫茶店 名詞-一般 片隅 カタスミ 片隅 名詞-一般 しよう シヨウ しよう 名詞-一般 男 オトコ 男 名詞-一般 しよう シヨウ しよう 名詞-一般 話 ハナシ 話 名詞-サ変接続 続け ツヅケ 続ける 動詞-自立 一段 連用形 い イ いる 動詞-非自立 一段 連用形

投稿2017/09/11 06:34

can110

総合スコア38230

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

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

aoisj

2017/09/11 06:49

詳細なアドバイスありがとうございます。 新たな課題も見つかったので、より良いプログラムになるようにがんばります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問