Dies ist das Verfahren bis zu dem Punkt, an dem Sie versuchen, eine morphologische Analyse mit Ruby (Mecab Gem) unter Ubuntu (Bionic) durchzuführen.
Zuerst installieren.
apt install mecab mecab-ipadic-utf8 libmecab-dev
gem install mecab
Sie können versuchen, das Analyseergebnis mit dem folgenden Programm auszugeben.
require 'mecab'
tagger = MeCab::Tagger.new
puts tagger.parse(open('sample.txt').read)
Dies ist ein Beispiel, das die Ausgabeergebniszeichenfolge (String) analysiert und in der Reihenfolge anzeigt, wie oft das Wort erscheint.
require 'mecab'
tagger = MeCab::Tagger.new
t = tagger.parse(open('sample.txt').read)
words = {}
t.split("\n").each do |l|
w = l.split("\t")[0]
c = words[w] || 0
c += 1
words[w] = c
end
words.sort {|a,b| a[1] <=> b[1]}.each do |v|
puts v[0]+"\t"+v[1].to_s
end
In diesem Beispiel werden Teilwörter nicht berücksichtigt, daher sind auch ",. (Interpunktion)" usw. enthalten. Ich denke, dass Filterung usw. je nach Zweck notwendig ist.
Es scheint einen Edelstein namens Natto zu geben, und es könnte eine gute Idee sein, diese Kräfte einzusetzen. Wenn Sie einfach spezialisiertere Analysemethoden ausprobieren oder visualisieren (Grafik) möchten, kann eine kostenlose Software namens KH Coder hilfreich sein ( Es scheint, dass MeCab immer noch intern verwendet wird.
Nachtrag (20.06.13) Ich habe versucht, den Code gemäß den Empfehlungen im Kommentarbereich zu verbessern. Die Version von Ruby, die im Standard von Ubuntu (Bionic-Beaver) enthalten ist, war "2.5.1p57", es handelt sich also um eine andere Form als "Tally".
require 'mecab'
tagger = MeCab::Tagger.new
t = tagger.parse(IO.read('sample.txt'))
words = Hash.new(0)
t.split("\n").each do |l|
w = l.split("\t")[0]
words[w] += 1
end
words.sort_by {|a| a[1]}.each do |w,f|
puts "%4d %s" % [f,w]
end
Recommended Posts