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

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

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

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

Python

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

Q&A

解決済

1回答

482閲覧

python mecabを使用した出力画面

yata7822

総合スコア16

Mecab

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

Python

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

0グッド

0クリップ

投稿2022/11/07 06:49

前提

ここに質問の内容を詳しく書いてください。
(例)
pythonとMeCabを用いて入力した分の要素を抜き取り画面に出力するプログラムを作っています。
現在、一文のみなら可能なプログラムが作れましたが二文になるとうまく動きません。「。」で文を区切っています。例えば、A。B。という文を入力するとBの方の文しか出力されません。解決方法を教えていただけると幸いです。

実現したいこと

ここに実現したいことを箇条書きで書いてください。
2つの文の要素を出力できるようにする

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

2つ目の文の要素しか表示されない

該当のソースコード

python

1from tkinter import * 2from tkinter import ttk 3import tkinter 4import MeCab 5 6#MeCabの設定 7tagger = MeCab.Tagger() 8 9#抜き取る品詞 10select_conditions = ['動詞','形容詞','名詞','副詞'] 11 12#ウィンドウを作成 13root = Tk() 14 15#ウィンドウサイズを指定 16root.geometry("700x800") 17 18#ウィンドウタイトルを指定 19root.title('入力フォーム') 20 21frame1 = ttk.Frame(root, padding=(32)) 22frame1.grid() 23 24#名前 25label1 = ttk.Label(frame1, text='解析する文章',padding=(10,2)) 26label1.grid(row=0,column=0,sticky=E) 27 28label2 = ttk.Label(frame1,text='出力図',padding=(10,2)) 29label2.grid(row=6, column=0,sticky=E) 30 31#入力フォーム作成 32name = StringVar() 33name_txt = ttk.Entry( 34 frame1, 35 textvariable=name, 36 width=20) 37name_txt.grid(row=0, column=1) 38 39 40 41#MeCabの関数 42count = 0 43def wakati_text(text): 44 45 #先頭の形態素情報を返しsurface(表層系)とfeature(形態素情報) 46 text_column =text.split("。") 47 count_node = len(text_column) - 1 48 node = [] 49 50 51 for i in range(count_node): 52 node = tagger.parseToNode(text_column[i]) 53 54 terms = [] 55 count = 0 56 57 while node: 58 #品詞の識別 59 pos = node.feature.split(',')[0] 60 #もし、名詞、動詞、形容詞のいずれかが含まれるなら 61 if pos in select_conditions: 62 #配列に7番目の原型を加える 63 count += 1 64 terms.append(node.feature.split(",")[6]) 65 66 node = node.next 67 68 text_result = ' '.join(terms) 69 70 #品詞を四角で囲み表示させる 71 72 for i in range(count): 73 canvas.create_rectangle(i*120+10,10,i*120+100,30,outline="green")#枠を生成 74 canvas.create_text(i*120+55,20,text=terms[i])#抜き出した単語を枠内に出力 75 76 77 #枠と枠をつなぐ線を出力 78 for i in range(count-1): 79 canvas.create_line(100+i*120,20,130+i*120,20) 80 81 82 return text_result 83 84 85def delete(): 86 canvas.delete("all") 87 88 89# Button 90button1 = ttk.Button( 91 frame1, text='OK', 92 command=lambda: print("%s" % (wakati_text(name.get()))) 93) 94button1.grid(row=3, column=1) 95 96button2 = ttk.Button( 97 frame1,text="delete", 98 command=lambda: delete() 99) 100button2.grid(row=3,column=2) 101 102#キャンバスエリア 103canvas = tkinter.Canvas(root,width=800,height=450) 104#キャンバスバインド 105canvas.place(x=100, y=200) 106 107#ウィンドウ表示継続 108root.mainloop() 109

試したこと

create_rectangle とcreate_lineのところにif i == 0: else: などの文を付け加えたが上手く表示されませんでした。

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

MeCab 0.99 python 3.10.5

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

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

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

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

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

yata7822

2022/11/08 14:01

回答いただきありがとうございます! まだ試していませんが、同じ状態であればlistを作ってそこに格納し、格納したものにfor文を適用してみたいと思います!
yata7822

2022/11/09 10:55

無事解決いたしました。このコメントが質問になってしまっているので回答の方に「あ」でもなんでも良いのでコメントいただけたらベストアンサーにさせていただきます。お手数おかけして申し訳ありません。
guest

回答1

0

ベストアンサー

状況としては
https://teratail.com/questions/mxk36up5qu8hfg
この方と同じ状態になっているかと思われます.

投稿2022/11/09 11:06

PondVillege

総合スコア1579

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

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

yata7822

2022/11/09 16:10

ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問