:CATEGORIES: #Ruby #Linux
sudo apt install mecab
sudo apt install libmecab-dev
sudo apt install mecab-ipadic-utf8
gem install mecab
gem install natto
- [Ruby]mecabを使ってみた(形態素解析) - Qiita[https://qiita.com/hkengo/items/0c47675c86535bc85d1e](https://qiita.com/hkengo/items/0c47675c86535bc85d1e)
上記のページを参考に,そのままコピペで実行してみました。形態素解析という言葉自体,今日初めて目にしたのですが,これは国語の勉強にもなりそうです。かなり人工知能的な感じです。
```
irb(main):001:0> require 'mecab'
=> true
irb(main):002:0> tagger = MeCab::Tagger.new
irb(main):003:0>
irb(main):004:0>
irb(main):005:0>
irb(main):006:0> puts tagger.parse('太郎はこの本を二郎を見た女性に渡した。')
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
この 連体詞,*,*,*,*,*,この,コノ,コノ
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二 名詞,数,*,*,*,*,二,ニ,ニ
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
=> nil
%(py37_env) ➜ ~ sudo gem install natto
Fetching natto-1.2.0.gem
Successfully installed natto-1.2.0
Parsing documentation for natto-1.2.0
Installing ri documentation for natto-1.2.0
Done installing documentation for natto after 0 seconds
1 gem installed
(py37_env) ➜ ~ irb
irb(main):001:0> require 'natto'
=> true
irb(main):002:0> nm = Natto::MeCab.new
irb(main):003:0> puts nm.parse('太郎はこの本を二郎を見た女性に渡した。')
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
この 連体詞,*,*,*,*,*,この,コノ,コノ
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二 名詞,数,*,*,*,*,二,ニ,ニ
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
=> nil
irb(main):004:1* nm.parse('太郎はこの本を二郎を見た女性に渡した。') do |n|
irb(main):005:1* puts "#{n.surface}\tpart-of-speech id: #{n.posid}" if !n.is_eos?
irb(main):006:0> end
太郎 part-of-speech id: 44
は part-of-speech id: 16
この part-of-speech id: 68
本 part-of-speech id: 38
を part-of-speech id: 13
二 part-of-speech id: 48
郎 part-of-speech id: 38
を part-of-speech id: 13
見 part-of-speech id: 31
た part-of-speech id: 25
女性 part-of-speech id: 38
に part-of-speech id: 13
渡し part-of-speech id: 31
た part-of-speech id: 25
。 part-of-speech id: 7
=> nil
irb(main):007:0> nm = Natto::MeCab.new('-F%m\t%f[0]\t%f[7]\n')
irb(main):008:0> enum = nm.enum_parse('太郎はこの本を二郎を見た女性に渡した。')
irb(main):010:0> enum.next
=> #
">
irb(main):011:0> enum.peek
=> #
">
irb(main):013:0> enum.rewind
=> #
irb(main):014:0> enum.each {|n| puts n.feature unless n.is_eos? }
太郎 名詞 タロウ
は 助詞 ハ
この 連体詞 コノ
本 名詞 ホン
を 助詞 ヲ
二 名詞 ニ
郎 名詞 ロウ
を 助詞 ヲ
見 動詞 ミ
た 助動詞 タ
女性 名詞 ジョセイ
に 助詞 ニ
渡し 動詞 ワタシ
た 助動詞 タ
。 記号 。
=> nil
```
0 件のコメント:
コメントを投稿