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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

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

自然言語処理

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

Q&A

解決済

1回答

9830閲覧

janomeでユーザー辞書を形態素解析に反映させる方法について

kinukane

総合スコア2

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

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

自然言語処理

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

0グッド

0クリップ

投稿2021/04/04 05:50

編集2021/04/04 09:58

前提・実現したいこと

GoogleColabでjanomeを使った形態素解析に挑戦しています。
今回ユーザー辞書を読み込ませてデフォルトの場合と比較したのですが両者に差が見えず、
ユーザー定義を反映させる方法についてアドバイス頂きたく投稿しました。
よろしくお願いいたします。

該当のソースコード

from janome.tokenizer import Tokenizer
text="再生可能エネルギー"

★ユーザー辞書なし
tokenizer = Tokenizer()
words=[]
tokens = tokenizer.tokenize(text)
for word in tokens:
words.append(word.surface)
print(" ".join(words)) # 再生 可能 エネルギー

★ユーザー辞書あり
tokenizer = Tokenizer('userdic3.0.csv', udic_enc='utf8')
words=[]
tokens = tokenizer.tokenize(text)
for word in tokens:
words.append(word.surface)
print(" ".join(words)) # 再生 可能 エネルギー

試したこと

userdic3.0.csvの内容:
再生可能エネルギー -1 -1 1000 名詞 一般 * * * * 再生可能エネルギー * *

13列のcsvファイルを読み込ませ、その際のエラーはなかったのですが、出力に差が見られませんでした。
「1000」の数値を変えても出力に変化はありませんでした。
また、調べても同じような方法でうまくいっている例しか出てこず、
エラーがないのに何がおかしいのか理解できていない状況です。

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

以下のサイトと同じコードをコピペして使いました。
https://eneprog.blogspot.com/2018/08/janomepython.html

###※追記(2021/4/4)
★userdic3.0.csvの生成過程
import pandas as pd
df = pd.read_csv('userdic2.4.csv') # userdic2.4.csvからuserdic3.0.csvを作成
df.to_csv("userdic3.0.csv", sep=",",index=False, header=False, encoding='utf8')

★userdic2.4.csvのDataFrame
イメージ説明

★userdic3.0.csvの確認
with open('userdic3.0.csv', 'r', encoding='utf-8') as f:
print(f.read()) # 再生可能エネルギー,-1,-1,1000,名詞 一般,,,,,再生可能エネルギー,,,

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

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

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

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

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

guest

回答1

0

ベストアンサー

こちらでの再現テストでは、以下の結果でした。

python

1>>> from janome.tokenizer import Tokenizer 2>>> text="再生可能エネルギー" 3>>> with open('userdic3.0.csv', 'r', encoding='utf-8') as f: 4... print(f.read()) 5... 6再生可能エネルギー,-1,-1,1000,名詞 一般,*,*,*,*,再生可能エネルギー,*,*, 7 8>>> tokenizer = Tokenizer('userdic3.0.csv', udic_enc='utf8') 9>>> words=[] 10>>> tokens = tokenizer.tokenize(text) 11>>> for word in tokens: 12... words.append(word.surface) 13... 14>>> print(" ".join(words)) 15再生可能エネルギー

これは、kinukaneさんの期待する結果ですね。

kinukaneさんのuserdic3.0.csvの中身は、上記のコードで表示したとき

text

1再生可能エネルギー,-1,-1,1000,名詞 一般,*,*,*,*,再生可能エネルギー,*,*,

になっていますか?

投稿2021/04/04 08:30

ppaul

総合スコア24670

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

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

kinukane

2021/04/04 09:59

早速のご回答ありがとうございます。 確かにppaulさんの出力結果は私が期待するものです! 私のuserdic3.0.csvでは 再生可能エネルギー,-1,-1,1000,名詞,一般,*,*,*,*,再生可能エネルギー,*,* となっておりました。「名詞」と「一般」を別のセルにしてしまっていたたため、 「名詞 一般」とし、最後の列を空白にすると ppaulさんと同じ 再生可能エネルギー,-1,-1,1000,名詞 一般,*,*,*,*,再生可能エネルギー,*,*, となりましたが、解析結果は変わらぬままでした。 csvを作成する過程に問題があるのではないかと思い、 対応するコードを追記したのですが、何かおかしな点ございますでしょうか。 お気づきの点ありましたらご指摘いただき存じます。
kinukane

2021/04/04 10:15

失礼いたしました。「解析結果は変わらぬままでした」と申し上げましたが、 ppaulさんにご指摘頂いたcsvファイルの修正でうまく解析できておりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問