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

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

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

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Mecab

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

Python

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

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

0回答

1124閲覧

機械学習時の文字コードのエラーの原因と改善

bothyouka

総合スコア0

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Mecab

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

Python

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

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2021/11/23 06:42

編集2022/01/12 10:55

前提・実現したいこと

インターネットの記事を参考にし、その辞書にプラス学習を追加して極性辞書を作成しています。
言葉に点数をつけるプログラムを実行しているときのエラーについての質問です。

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

#fasttextのモデルを読み込む部分を自分の学習させたモデルで実行するとエラーが発生します。

エラーメッセージ

ryohto@DESKTOP-SMEABJL:~/Python_code/zisyo$ python3 abc_keitaiso4.py
/home/ryohto/.local/lib/python3.8/site-packages/gensim/similarities/init.py:15: UserWarning: The gensim.similarities.levenshtein submodule is disabled, because the optional Levenshtein package https://pypi.org/project/python-Levenshtein/ is unavailable. Install Levenhstein (e.g. pip install python-Levenshtein) to suppress this warning.
warnings.warn(msg)
Traceback (most recent call last):
File "abc_keitaiso4.py", line 11, in <module>
model =gensim.models.KeyedVectors.load_word2vec_format('model300.vec')
File "/home/ryohto/.local/lib/python3.8/site-packages/gensim/models/keyedvectors.py", line 1630, in load_word2vec_format
return _load_word2vec_format(
File "/home/ryohto/.local/lib/python3.8/site-packages/gensim/models/keyedvectors.py", line 1913, in _load_word2vec_format
_word2vec_read_text(fin, kv, counts, vocab_size, vector_size, datatype, unicode_errors, encoding)
File "/home/ryohto/.local/lib/python3.8/site-packages/gensim/models/keyedvectors.py", line 1818, in _word2vec_read_text
word, weights = _word2vec_line_to_vector(line, datatype, unicode_errors, encoding)
File "/home/ryohto/.local/lib/python3.8/site-packages/gensim/models/keyedvectors.py", line 1823, in _word2vec_line_to_vector
parts = utils.to_unicode(line.rstrip(), encoding=encoding, errors=unicode_errors).split(" ")
File "/home/ryohto/.local/lib/python3.8/site-packages/gensim/utils.py", line 365, in any2unicode
return str(text, encoding, errors=errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 0: invalid continuation byte

該当のソースコード

python

1import gensim 2import time 3import MeCab 4# 引数取得 5import sys 6from sys import argv 7import jaconv 8 9 10#fasttextのモデルを読み込む 11model =gensim.models.KeyedVectors.load_word2vec_format('model300.vec') 12 13 14#「非常にポジティブな単語」と「非常にネガティブな単語」を任意で指定 15posi_list = ['優れる', '良い','神','喜ぶ','褒める', 'めでたい','賢い','善い', '適す','天晴', 16 '祝う', '功績','賞','嬉しい','喜び','才知','徳', '才能','素晴らしい','芳しい','称える', 17 '適切','崇める','助ける','抜きんでる','清水','雄雄しい','仕合せ','幸い','吉兆','秀でる'] 18 19nega_list = ['悪い', 'クソ','死ぬ', '病気', '酷い', '罵る', '浸ける', '卑しい'] 20def posi_nega_score(x): 21 #ポジティブ度合いの判定 22 posi = [] 23 for i in posi_list: 24 try: 25 n = model.similarity(i, x) 26 posi.append(n) 27 except: 28 continue 29 try: 30 #posi_mean = sum(posi)/len(posi) 31 posi_mean=max(posi) 32 except: 33 posi_mean = 0 34 35 #ネガティブ度合いの判定 36 nega = [] 37 for i in nega_list: 38 try: 39 n = model.similarity(i, x) 40 nega.append(n) 41 except: 42 continue 43 try: 44 #nega_mean = sum(nega)/len(nega) 45 nega_mean=max(nega) 46 except: 47 nega_mean = 0 48 49 if abs(posi_mean-nega_mean)<0.05: 50 return [posi_mean,nega_mean] 51 if posi_mean > nega_mean: 52 return [posi_mean] 53 if nega_mean > posi_mean: 54 return [-nega_mean] 55 else: 56 return [0] 57 58row_no = 0 59#ファイル実行開始時刻を取得 60timestr = time.strftime('%Y%m%d-%H%M%S') 61 62#出力ファイル名 63out_file_name = "zisyo_" + timestr + ".txt" 64with open(out_file_name, 'w') as f: 65 fileobj = open("ochasen_20211109-171619.txt", "r", encoding="utf_8") 66 # line = fileobj.readlines() 67 for l in fileobj: 68 a = l.split(' ')[0] 69 tagger = MeCab.Tagger() 70 parse = tagger.parse(a) 71 b=parse.split('\t')[0] 72 c=parse.split('\t')[1] 73 if len(c.split(',')) < 8: 74 henkan = b 75 #print(b,henkan,c.split(',')[1],posi_nega_score(a)) 76 if len(posi_nega_score(a)) ==2: 77 with open('absdef15.txt', 'a') as f2: 78 s=b+':'+b+':'+c.split(',')[1]+':'+ str(posi_nega_score(a)[0])+':'+str(posi_nega_score(a)[1])+'\n' 79 f2.write(s) 80 continue 81 s=b+':'+henkan+':'+c.split(',')[1]+':'+str(posi_nega_score(a)[0])+'\n' 82 else: 83 henkan = jaconv.kata2hira(c.split(',')[7]) 84 if len(posi_nega_score(a)) ==2: 85 with open('absdef15.txt', 'a') as f2: 86 s=b+':'+henkan+':'+c.split(',')[0]+':'+ ' '+ str(posi_nega_score(a)[0])+','+str(posi_nega_score(a)[1])+'\n' 87 f2.write(s) 88 continue 89 #print(b,henkan,c.split(',')[0],posi_nega_score(a)) 90 s=b+':'+henkan+':'+c.split(',')[0]+':'+str(posi_nega_score(a)[0])+'\n' 91 92 f.write(s)

試したこと

ここに問題に対して試したことを記載してください。
エラーメッセージを確認し、文字コードが違うのではないかと思い、確認したところ、参考記事の文字コードと同じなのにもかかわらずエラーが発生しました。

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

ここにより詳細な情報を記載してください。
参考記事
https://qiita.com/g-k/items/1b7c765fa6520297ca7c
こちらのネガティブ度合いの自動判定のプログラムを参考にしています。

使用しているmodel300のファイルの文字コードはUTF-8になっています。

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

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

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

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

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

jbpb0

2021/11/23 07:37

pythonのコードの一番最初の行のすぐ上に ```python だけの行を追加してください また、pythonのコードの一番最後の行のすぐ下に ``` だけの行を追加してください または、 https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif を見て、そのようにしてみてください 現状、コードがとても読み辛いです 質問にコードを載せる際に上記をやってくれたら、他人がコードを読みやすくなり、コードの実行による現象確認もやりやすくなるので、回答されやすくなります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問