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

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

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

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python 3.x

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

Q&A

解決済

1回答

445閲覧

install済みのパッケージが利用できない

studyprg

総合スコア57

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python 3.x

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

0グッド

0クリップ

投稿2022/07/25 10:33

前提

Word2Vecで作ったモデルを動かして単語間の類似度を算出し一定以上の単語を類義語として算出するプログラムを作成しました

がimportしたはずのライブラリが使えなくて困っています.
実行環境はmacbookpro(2017),visualstudioで実行しましたが以下のエラーメッセージが出ています.
それで自分のterminalで実行しましたが同様のメッセージが出ています.

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 作成したプログラムを動かしたい

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

daru % python3 idf_test.py Traceback (most recent call last): File "/Users/daru/***/***/idf_test.py", line 2, in <module> import MeCab ModuleNotFoundError: No module named 'MeCab'

(pip listからmecabが入っているのは確認済み)

該当のソースコード

python

1# -*- coding: utf-8 -*- 2import MeCab 3from gensim.models import Word2Vec 4import pandas as pd 5import math 6import re 7print("モデルロード") 8model = gensim.models.Word2Vec.load("jikken.model") 9myfile = open('history_0text.txt') 10# 以下に抽出したい文text 11text = myfile.read() 12m = MeCab.Tagger("-Ochasen") 13mp = MeCab.Tagger() 14# m.parse("") 15print("処理開始") 16removeW = re.compile( 17 18 '[!"#$%&\'\\\\()*+,-./:;<=>?@[\\]^_`{|}~「」〔〕“”〈〉『』【】&*・()$#@。、?!`+¥% ]') 19text = removeW.sub('', text) 20 21text = re.sub(r"\n", "", text) # 一行づつ配列に入れる時に改行文字が混じったから消しとく 22text = re.sub(r'[a-zA-Z0-9]+', "", text) # 英数字をすべて消す 23text = text.replace("[]", "") # 脚注で無意味に混じった[]の削除 24 25 26print("text clesn complite!") 27# print(text) 28# f=open('simw_d2v_2.txt',"w") 29#paragraf =mp.parse(text).split('\n') 30nouns = [line.split()[0] for line in m.parse(text).splitlines() 31 if "名詞" in line.split()[-1]] # ここをへんこうする 32for str in nouns: 33 str.split() 34 35 # type:strで格納済み 36# print(nouns)#中身の確認 37a = 0 38l_size = len(nouns) 39b = 0 40simd = {} 41simt = [] 42wsimx = {} 43wsimid = {} 44eject = [] 45 46# ここで重複単語の除外 47print("重複単語除外") 48nouns2 = [] 49for x in nouns: 50 if not x in nouns2: 51 nouns2.append(x) 52for w in nouns2: 53 if not w in model: 54 nouns2.remove(w) 55 continue 56 57 simd.setdefault(x, []) 58l_size2 = len(nouns2) 59 60# print(nouns2) 61# print(l_size2,"単語") 62listn = [[None]*l_size2 for i in range(l_size2)] 63# 辞書の作成key=nouns2,value=none 64 65 66# 処理 本体 67 68print("計算中") 69for a in range(0, l_size2): 70 71 w1 = nouns2[a] 72 # simw=[for i in range(l_size2)] 73 print("単語:[", w1, "]", a+1, "回目") 74 75 # simw[a].append(w1) 76 for b in range(0, l_size2): 77 print(b) 78 w2 = nouns2[b] 79 80 sim = model.docvecs.similarity(w1, w2) 81 listn[a][b] = sim 82 83 if sim >= 0.4: 84 # print(w1,"類義語:",w2) 85 86 simd[w1].append(w2) 87 # print("類語 ",w1,":",simd[w1]) 88 89print("処理を", a+1, "回実行しました") 90for k, v in simd.items(): 91 print("単語", k, "値:", v) 92 93 94# 類語辞書作成 95 96 97print("makeing simdictionaly...") 98samw = 0 99for i in range(0, l_size2): 100 wsimid[i] = 0 101 # print(wsimid) 102 for alpha in simd.keys(): 103 list1 = simd.get(alpha) 104 if i <= 140: 105 # print(i,list1) 106 for x in list1: 107 # c=nouns.count(x) 108 # xid=wsimx.get(x) 109 # print(x,":",c) 110 #samw += c 111 wsimx.setdefault(x, i) 112 # wsimid[xid]=wsimid.get(xid)+c 113 # wsimid[xid]=c 114 i += 1 115 116 117print("単語からid辞書", wsimx) 118print("idから出現個数リスト(値は0)", wsimid) 119 120print("tf作成") 121for y in nouns: 122 c = nouns.count(y) 123 xid = wsimx.get(y) 124 print(y, ":id=", xid, "出現回数:", c) 125 samw += c 126 wsimid[xid] = wsimid[xid]+c 127 128 129print("idから出現個数リスト(更新版)", wsimid) 130 131list_tf = [] 132 133for tfx in wsimx.keys(): 134 yid = wsimx[tfx] 135 tf = wsimid[yid]/samw 136 list_tf.append(tf) 137 print(tfx, "のtf:", tf) 138 139 140# print(list_tf) 141 142print("idf作成") 143list_idf = [] 144for tfx in wsimx.keys(): 145 yid = wsimx[tfx] 146 idf = 1/wsimid[yid] 147 idf = math.log(idf) 148 list_idf.append(idf) 149 print(tfx, "のidf:", idf) 150 151 152tf_size = len(list_tf) 153print("tfxidf作成") 154list_tfidf = [] 155for v in range(tf_size): 156 tfidf = list_tf[v]*list_idf[v] 157 list_tfidf.append(tfidf) 158 #listv = simd.get(v) 159 160 # print(v,listv) 161 print(v, ":", tfidf) 162 163 164### 試したこと 165 166mecabのインストールし直しなど 167

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

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

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

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

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

meg_

2022/07/25 10:41

> pip listからmecabが入っているのは確認済み 上記のPython環境とスクリプトを実行した環境は同一ですよね?
studyprg

2022/07/25 10:54

同じだと思います。 python3.7です。
meg_

2022/07/25 11:05

> 同じだと思います。 pip list を実行し、そのままそのスクリプトを実行すれば「思う」ではなく同じなのですが、そうはしていないということですか? > python3.7です。 仮想環境含めて”同一”ですか?と訊いています。
studyprg

2022/07/25 11:37

今から確認します。
studyprg

2022/07/25 12:00

vscode:python2.7.16 python3:3.10 mecab:0.996.3 mecab-python3:1.0.4 terminal: python:2.7.16 python3:3.10 mecab:0.996.3 mecab-python3:1.0.4 です.
studyprg

2022/07/25 12:00

3.7じゃありませんでした.
jbpb0

2022/07/25 12:02

pip list を実行したのと同じ状態で pip show mecab を実行してください (pipでインストールしたモジュール名がmecabではないなら、インストールしたモジュール名に合わせて実行してください) 実行したらいろいろ表示される中に「Location:」で始まる行がありますので、そこに書かれてるパスを記録してください 次に、pythonで import MeCab がうまくいかない状態で、下記のpythonコードを実行してください import sys import pprint pprint.pprint(sys.path) たくさんパスが表示されますが、その中にpip show...で記録したパスが入ってますでしょうか? 入ってないとimportできません
studyprg

2022/07/25 12:02

pip3にmecabinstallできてなかったのでインストールしました. エラーは変わりませんでした.
studyprg

2022/07/25 12:07

Python 2.7.16 (default, Sep 6 2021, 07:39:44) [GCC Apple LLVM 12.0.5 (clang-1205.0.19.59.6) [+internal-os, ptrauth-isa=deploy on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> import pprint >>> pprint.pprint(sys.path) ['', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/Library/Python/2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC'] >>> importsysからの3行を実行した時のコピペです. ちなみに pip show mecabを実行すると Name: mecab Version: 0.996.3 Summary: MeCab binding for many OSs (Windows, macOS, and Linux) Home-page: https://github.com/ikegami-yukino/mecab/tree/master/mecab/python Author: Yukino Ikegami Author-email: yknikgm@gmail.com License: BSD, GPL or LGPL Location: /Library/Python/3.8/site-packages Requires: Required-by:
studyprg

2022/07/25 12:07

mecabは3.8に入ってますね.
jbpb0

2022/07/25 12:28 編集

> mecabは3.8に入ってますね. それなのに、 > Python 2.7.16 (default, Sep 6 2021, 07:39:44) python 2.7を使ってたら、インポートできなくてあたりまえです python 3.8を使いましょう 「python」じゃなくて「python3」で起動したら、どのバージョンが動くのですか?
jbpb0

2022/07/25 12:30

> vscode:python2.7.16 python3:3.10 mecab:0.996.3 mecab-python3:1.0.4 terminal: python:2.7.16 python3:3.10 mecab:0.996.3 mecab-python3:1.0.4 3.10? 3.8と3.10を入れてるのですか?
studyprg

2022/07/25 12:31

そうなってるみたいですね。 申し訳ないです。 プログラミングあんまり得意じゃなくて…
jbpb0

2022/07/25 12:34

> daru % python3 idf_test.py 「python3」で実行して、mecabがインポートできないのですよね それなら、「python3」で起動して、「...pprint.pprint(sys.path)」を実行して調べてください そうすれば、2.7は起動しないはず (3.8と3.10のどちらが起動するのかは分からないけど)
studyprg

2022/07/25 12:40

一応現状で動きました。 しかし、モデルにない単語を除外できていないようです。
studyprg

2022/07/25 12:40

メカブをpython3に入れたら動きました。
guest

回答1

0

自己解決

mecabをpython3 に入れ忘れてました。
jppb0さんありがとうございました。

投稿2022/07/25 14:01

studyprg

総合スコア57

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問