sudo apt install mecab
sudo apt install libmecab-dev
sudo apt install mecab-ipadic-utf8
gem install mecab
gem install natto
- [Ruby]mecabを使ってみた(形態素解析) - Qiitahttps://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 => #<Natto::MeCabNode:0x0000560e4f4c8638 @pointer=#<FFI::Pointer address=0x0000560e4f745930>, stat=0, @surface="太郎", @feature="太郎 名詞 タロウ "> irb(main):011:0> enum.peek => #<Natto::MeCabNode:0x0000560e4f528510 @pointer=#<FFI::Pointer address=0x0000560e4f745af0>, stat=0, @surface="は", @feature="は 助詞 ハ "> irb(main):013:0> enum.rewind => #<Enumerator: #<Enumerator::Generator:0x0000560e4f4cfe88>:each> irb(main):014:0> enum.each {|n| puts n.feature unless n.is_eos? } 太郎 名詞 タロウ は 助詞 ハ この 連体詞 コノ 本 名詞 ホン を 助詞 ヲ 二 名詞 ニ 郎 名詞 ロウ を 助詞 ヲ 見 動詞 ミ た 助動詞 タ 女性 名詞 ジョセイ に 助詞 ニ 渡し 動詞 ワタシ た 助動詞 タ 。 記号 。 => nil