[RUBY] Ich habe eine morphologische Analyse mit MeCab versucht

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

Ich habe eine morphologische Analyse mit MeCab versucht
Englische morphologische Analyse wie MeCab mit OpenNLP
Chinesische morphologische Analyse wie Mecab mit FNLP
Ich habe DI mit Ruby versucht
Ich habe versucht, den Quellcode zu analysieren
Ich habe UPSERT mit PostgreSQL ausprobiert.
Ich habe BIND mit Docker ausprobiert
Morphologische Analyse in Java mit Kuromoji
Ich habe versucht, JOOQ mit Gradle zu verwenden
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
Ich habe versucht, Slim mit Scaffold anzupassen
Ich habe versucht, Realm mit Swift UI zu verwenden
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, Scalar DL mit Docker zu verwenden
Ich habe versucht, OnlineConverter mit SpringBoot + JODConverter zu verwenden
Ich habe mit Studyplus zeitsparendes Management-Lernen versucht.
Ich habe versucht, ein wenig mit BottomNavigationView zu spielen ①
Ich habe versucht, OpenCV mit Java + Tomcat zu verwenden
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Ich habe es mit Spring versucht.
Ich habe versucht, Tomcat zu setzen
Ich habe youtubeDataApi ausprobiert.
Ich habe versucht, ① umzugestalten
Ich habe FizzBuzz ausprobiert.
Ich habe JHipster 5.1 ausprobiert
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe versucht, Anmeldeinformationen mit JMX zu verwalten
Ich habe auch Web Assembly mit Nim und C ausprobiert
Ich habe mit Ruby einen Blackjack gemacht (ich habe versucht, Minitest zu verwenden)
Ich habe Eclipse MicroProfile OpenAPI mit WildFly Swarm ausprobiert
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe versucht, mit Gradle auf Heroku zu beginnen
Ich habe versucht, was ich mit Stream leise versuchen wollte.
[Ich habe es versucht] Spring Tutorial
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Ich habe versucht, TCP / IP + BIO mit JAVA zu implementieren
Ich habe versucht, Autoware auszuführen
Ich habe versucht, Gson zu benutzen
[Java 11] Ich habe versucht, Java auszuführen, ohne mit Javac zu kompilieren
Ich habe MySQL 5.7 mit Docker-Compose gestartet und versucht, eine Verbindung herzustellen
Ich habe sofort QUARKUS ausprobiert
Ich habe versucht, mit Spring Data JPA zu beginnen
Ich habe versucht, TestNG zu verwenden
[Maschinelles Lernen] Ich habe die Objekterkennung mit Create ML [Objekterkennung] ausprobiert.
Ich habe Spring Batch ausprobiert
Ich habe versucht, Galasa zu benutzen
Ich habe versucht, Animationen mit der Blazor + Canvas-API zu zeichnen
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
Ich habe versucht, Sterling Sort mit Java Collector zu implementieren
Ich habe versucht, node-jt400 (Programme)
Ich habe versucht, node-jt400 (ausführen)
NLP4J 100 Sprachverarbeitungsklopfen mit NLP4J # 30 Lesen morphologischer Analyseergebnisse