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

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

ただいまの
回答率

90.34%

  • Python 3.x

    7389questions

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

  • Mecab

    194questions

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

mecab 品詞 選択

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,247

aoisj

score 19

やりたいこと

選択したテキストファイル内の文章を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の中身:
コーヒーメーカー

植松眞人・作

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

・・・

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

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

絞り込みのルールについての詳細

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • can110

    2017/09/11 14:58

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

    キャンセル

  • aoisj

    2017/09/11 15:02

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

    キャンセル

  • can110

    2017/09/11 15:07

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

    キャンセル

回答 1

checkベストアンサー

+1

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

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

import MeCab
inp = """
コーヒーメーカー

植松眞人・作

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

m = MeCab.Tagger('-Ochasen')
chunks = m.parse(inp).splitlines()

print('入力---')
sels = [] # 絞り結果
for chunk in chunks:
    print(chunk)
    cols = chunk.split('\t')    # ['コーヒー','コーヒー','コーヒー','名詞-一般']や['EOS']など
    if len(cols) >= 4:
        parts = cols[3].split('-') # ['名詞','一般']
        if parts[0].startswith('名詞') or parts[0].startswith('動詞'):
            sels.append(chunk)

# 絞り結果
print('絞り結果---')
for sel in sels:
    print(sel)

結果例

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/11 15:49

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

    キャンセル

同じタグがついた質問を見る

  • Python 3.x

    7389questions

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

  • Mecab

    194questions

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