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

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

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

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

Python

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

Q&A

解決済

1回答

325閲覧

MeCabを使って表層文字列を出力したいのですが、UnicodeEncodeErrorになってしまいます。

ssken

総合スコア5

Mecab

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

Python

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

0グッド

0クリップ

投稿2022/05/18 05:18

編集2022/05/18 08:38

MeCabを利用して、「私はペンを持っています」から表層文字列を出力したいのですが、下記のようにエラーになってしまいます。

「Traceback (most recent call last):
File "test.py", line 8, in <module>
print(result.surface)
UnicodeEncodeError: 'utf-8' codec can't encode character '\udc92' in position 2: surrogates not allowed」

コードは以下の通りです。
実行はVSCODEのターミナルから「python test.py」と打って実行しております。

import MeCab t = MeCab.Tagger() result = t.parseToNode('私はペンを持っています。') while result: f = result.feature p = f.split(',')[0] print(result.surface) result = result.next

解決策が分からず、ご教示いただけると幸いです。🙇


OS:Mac
環境:venv
エディタ:VScode

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

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

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

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

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

quickquip

2022/05/18 05:42 編集

Trackbackを隠さずに載せてください。どの行でエラーになっているか伝わっていません。 https://teratail.com/help/question-tips#questionTips34 あと、どうやって実行しているかも書いた方がいいかもしれません。VScodeの機能で実行しているのでしょうか。 (再現する感じがないので……)
guest

回答1

0

ベストアンサー

あくまで推測ですが,手持ちの環境で

echo 私はペンを持っています。 | mecab
を実行した結果,

私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ は 助詞,係助詞,*,*,*,*,は,ハ,ワ ペン 名詞,一般,*,*,*,*,ペン,ペン,ペン を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 持っ 動詞,自立,*,*,五段・タ行,連用タ接続,持つ,モッ,モッ て 助詞,接続助詞,*,*,*,*,て,テ,テ い 動詞,非自立,*,*,一段,連用形,いる,イ,イ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス 。 記号,句点,*,*,*,*,。,。,。 EOS

についてSJISに変換してファイルに保存し
HEX(16進数ダンプ)を確認すると,次のようになりdc92という箇所があるので,
おそらくインストールされているMeCabは
SJISを吐き出す状態になっているのではないかと思います。
pythonで利用するためにはutf-8で出力するようにMecabが設定されている必要があると思います。

00000000: 8e84 0996 bc8e 8c2c 91e3 96bc 8e8c 2c88 .......,......,. 00000010: ea94 ca2c 2a2c 2a2c 2a2c 8e84 2c83 8f83 ...,*,*,*,..,... 00000020: 5e83 562c 838f 835e 8356 0a82 cd09 8f95 ^.V,...^.V...... 00000030: 8e8c 2c8c 578f 958e 8c2c 2a2c 2a2c 2a2c ..,.W....,*,*,*, 00000040: 2a2c 82cd 2c83 6e2c 838f 0a83 7983 9309 *,..,.n,....y... 00000050: 96bc 8e8c 2c88 ea94 ca2c 2a2c 2a2c 2a2c ....,....,*,*,*, 00000060: 2a2c 8379 8393 2c83 7983 932c 8379 8393 *,.y..,.y..,.y.. 00000070: 0a82 f009 8f95 8e8c 2c8a 698f 958e 8c2c ........,.i...., 00000080: 88ea 94ca 2c2a 2c2a 2c2a 2c82 f02c 8392 ....,*,*,*,..,.. 00000090: 2c83 920a 8e9d 82c1 0993 ae8e 8c2c 8ea9 ,............,.. 000000a0: 97a7 2c2a 2c2a 2c8c dc92 6981 4583 5e8d ..,*,*,...i.E.^. 000000b0: 732c 9841 9770 835e 90da 91b1 2c8e 9d82 s,.A.p.^....,... 000000c0: c22c 8382 8362 2c83 8283 620a 82c4 098f .,...b,...b..... 000000d0: 958e 8c2c 90da 91b1 8f95 8e8c 2c2a 2c2a ...,........,*,* 000000e0: 2c2a 2c2a 2c82 c42c 8365 2c83 650a 82a2 ,*,*,..,.e,.e... 000000f0: 0993 ae8e 8c2c 94f1 8ea9 97a7 2c2a 2c2a .....,......,*,* 00000100: 2c88 ea92 692c 9841 9770 8c60 2c82 a282 ,...i,.A.p.`,... 00000110: e92c 8343 2c83 430a 82dc 82b7 098f 9593 .,.C,.C......... 00000120: ae8e 8c2c 2a2c 2a2c 2a2c 93c1 8eea 8145 ...,*,*,*,.....E 00000130: 837d 8358 2c8a ee96 7b8c 602c 82dc 82b7 .}.X,...{.`,.... 00000140: 2c83 7d83 582c 837d 8358 0a81 4209 8b4c ,.}.X,.}.X..B..L 00000150: 8d86 2c8b e593 5f2c 2a2c 2a2c 2a2c 2a2c ..,..._,*,*,*,*, 00000160: 8142 2c81 422c 8142 0a45 4f53 0a .B,.B,.B.EOS.

私の手持ちの環境はX86_64 linuxのubuntuなので,Macの事はよく分かりません。
もう一度MeCabのインストール状態について確認してみてはいかがでしょうか?

投稿2022/10/31 14:02

編集2022/10/31 14:03
ujimushi_sradjp

総合スコア2091

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

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

ssken

2022/11/11 01:01

ありがとうございます! 解決できそうです、助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問