前提・実現したいこと
mecabをGoogle Colabにて使用しています。
通常辞書に加えてNeologd辞書を追加中です。
新しい単語を追加したいです。
参考サイト
前提状態
①追加辞書の用意
Google Colab
linux
1!apt install aptitude 2 3!aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file -y 4 5!pip install mecab-python3==0.7 6 7!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git 8 9cd mecab-ipadic-neologd/ 10 11!sudo ./bin/install-mecab-ipadic-neologd -n -a 12 13# 追加辞書の場所 14!echo `mecab-config --dicdir`"/mecab-ipadic-neologd" 15
python
1import MeCab 2wakati = MeCab.Tagger('-Owakati') #分かち書き 3neo_wakati = MeCab.Tagger('-Owakati -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd') #追加辞書を適用 4word = input("分かち書き:") 5wakati = wakati.parse(word).strip() 6neo_wakati = neo_wakati.parse(word).strip() 7 8print('通常辞書:' + wakati) 9print('追加辞書:' + neo_wakati)
このpythonコードによって辞書別に結果が違うことを確認しました。
例)
通常辞書⇒パウエル 国務長官
Neologd辞書⇒パウエル国務長官
つまり、追加辞書側Neologdにはパウエル国務長官というワードがあるため全体ワードとして認識している。
②Gensimのword2vecモデルの準備
Gensimのモデルを取得
ここから一度開発PCのwindowsにダウンロードしzip解凍してから以下をGoogle ColabにDrag&Drop
word2vec.gensim.model
word2vec.gensim.model.syn1neg.npy
word2vec.gensim.model.wv.syn0.npy
linux
1!git submodule init 2!git submodule update 3cd content/
python
1from gensim.models.word2vec import Word2Vec 2 3model_path = 'word2vec.gensim.model' 4model = Word2Vec.load(model_path) 5 6model.wv['お花見大好き人間']
現状
理想
Neologd辞書でお花見大好き人間が「お花見 大好き 人間」
単語登録をすると「お花見大好き人間」として表示になって欲しい。
結果的にはそれを単語ベクトルとして使用していきたい。
新しい単語の登録方法
③CSVのコンパイル
参考サイトは以下。
方法1:Mecabの辞書をカスタマイズする
発生している問題・エラーメッセージ
no job control
他に試した方法として、そもそも初めのコンパイル時にCSVの中に入れてしまう方法を行ってみようと思いました。
方法2:
mecab-ipadic-neologdのbinの中にinstall-mecab-ipadic-neologdがあり、そのファイルにreadコマンドで実行中にエンターキーを促し一定期間実行が止まるようにし(下画像の赤数字1と赤数字2)、buidフォルダ配下のに追加ワードを書いたCSVを配置(下の画像の赤数字3)
登録されていませんでした。
CSVをbuild配下のmecab-ipadic-2.7.0-20070801-neologd-20200910に置くことで、一緒にコンパイル処理をしてくれるとサイトで記載ありまして実行してみましたが。以下の通りでした。
個別に追加する方法や、コンパイル時にCSVファイルを混入させる方法などいくつか試しましたが、どれもうまくいきませんでした。知見ある方どなたかアドバイス頂けないでしょうか。よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
開発PCはwinodws10
Google colabはLinux.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。