RMeCabのdocDFコマンドで文書-単語行列を作成する際にNEologd辞書を使う方法
はじめに
RMeCabのdocDFコマンドで形態素解析する場合NEologd辞書を使用して文書-単語行列を作成する場合エラーが出ます。
これはdocDFコマンドでは内部の処理で単語区切りにスペースを用いている様で、
一方でNEologd辞書では原型語に"AIR Do"の様にスペースを持った語が登録されているためにエラーとなるようです。
http://rmecab.jp/new/forums/topic/neologd%E8%BE%9E%E6%9B%B8%E7%AD%89%E3%81%AE%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%92%E5%90%AB%E3%82%80%E5%8D%98%E8%AA%9E%E3%81%AE%E6%89%B1%E3%81%84%E3%81%AB%E3%81%A4%E3%81%8D%E3%81%BE%E3%81%97/
このため、原型語を使わないオプションGenkei=1をつけてdocDFで文書-単語行列を作る際はエラーが出ません。
ただこれだと形態素数が増え行列が大きくなるのと、活用によって形態素が分かれてしまうので疎な行列になってしまいます。
解決方法
コンパイル前のNEologd辞書の原型語の列のスペースを"_"に変換してからコンパイルする。
ただ、NEologd辞書はUTF-8の500MB程のcsvファイルなのでこれを編集する必要があります。
手順
1.NEologd辞書のseedのcsvファイルを開く
2019/02/17現在 原型語にスペースが含まれているのはecab-user-dict-seedファイルのみです。
mecab-user-dict-seed.(NEologd辞書の日付).csvをUTF-8の大容量ファイルを編集できるアプリケーションで開く。
自分はEmEditorを用いました。
https://jp.emeditor.com/
2.原型語の列(11列)目の全角スペースを"_"に変える。
3.ファイルを保存
4.後は通常の手順と同じくコンパイルして.dicファイルを作成する。
コンパイル以降は以下の記載を参照ください。
https://qiita.com/zincjp/items/c61c441426b9482b5a48
課題
ただ、この方式を用いると複数語からなる原型語の間には_が入ってしまいます。
ベルトコンベア 名詞,固有名詞,一般,*,*,*,conveyor_belt,ベルトコンベア,ベルトコンベア
なんとかプログラムでそれもRで出来ないか考えましたが、
!|||!( ♉ฺ ω ♉ฺ ;)!|||!
↑こんなのがうまくread.csvで読めずに諦めました。
Author And Source
この問題について(RMeCabのdocDFコマンドで文書-単語行列を作成する際にNEologd辞書を使う方法), 我々は、より多くの情報をここで見つけました https://qiita.com/zincjp/items/6dac5f400447f40a50d7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .