[RUBY] J'ai essayé l'analyse morphologique avec MeCab

C'est la procédure jusqu'au point où vous essayez d'effectuer une analyse morphologique en utilisant Ruby (mecab gem) sur Ubuntu (bionic).

Première installation.

apt install mecab mecab-ipadic-utf8 libmecab-dev
gem install mecab

Vous pouvez essayer de sortir le résultat de l'analyse avec le programme suivant.

require 'mecab'

tagger = MeCab::Tagger.new
puts tagger.parse(open('sample.txt').read)

Il s'agit d'un exemple qui analyse la chaîne de résultat de sortie (String) et l'affiche dans l'ordre du nombre de fois où le mot apparaît.

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

Dans cet exemple, les mots de partie ne sont pas pris en compte, donc ",. (Ponctuation)" etc. sont également inclus. Je pense que le filtrage, etc. est nécessaire selon le but.

Il semble y avoir un joyau appelé natto, et il peut être judicieux d'utiliser ces pouvoirs. De plus, si vous souhaitez essayer facilement des méthodes d'analyse plus spécialisées, ou si vous souhaitez visualiser (graphe), un logiciel gratuit appelé KH Coder peut être utile ( Il semble que MeCab soit toujours utilisé en interne).

--Référence: J'ai essayé d'utiliser mecab

Addendum (20.06.13) J'ai essayé d'améliorer le code selon les conseils donnés dans la section commentaires. La version de Ruby incluse dans le standard d'Ubuntu (bionic-beaver) était 2.5.1p57, donc c'est une forme autre que 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

J'ai essayé l'analyse morphologique avec MeCab
Analyse morphologique anglaise comme MeCab avec OpenNLP
Analyse morphologique chinoise comme Mecab avec FNLP
J'ai essayé DI avec Ruby
J'ai essayé l'analyse du code source
J'ai essayé UPSERT avec PostgreSQL.
J'ai essayé BIND avec Docker
Analyse morphologique en Java avec Kuromoji
J'ai essayé d'utiliser JOOQ avec Gradle
J'ai essayé d'interagir avec Java
J'ai essayé la communication UDP avec Java
J'ai essayé GraphQL avec Spring Boot
J'ai essayé Flyway avec Spring Boot
J'ai essayé de personnaliser Slim avec Scaffold
J'ai essayé d'utiliser Realm avec Swift UI
J'ai essayé de démarrer avec Web Assembly
J'ai essayé d'utiliser Scalar DL avec Docker
J'ai essayé d'utiliser OnlineConverter avec SpringBoot + JODConverter
J'ai essayé l'apprentissage de la gestion qui fait gagner du temps avec Studyplus.
J'ai essayé de jouer un peu avec BottomNavigationView ①
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
J'ai essayé l'initialisation paresseuse avec Spring Boot 2.2.0
J'ai essayé Spring.
J'ai essayé de mettre Tomcat
J'ai essayé youtubeDataApi.
J'ai essayé de refactoriser ①
J'ai essayé FizzBuzz.
J'ai essayé JHipster 5.1
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
J'ai essayé de faire une authentification de base avec Java
J'ai essayé de gérer les informations de connexion avec JMX
J'ai aussi essayé Web Assembly avec Nim et C
J'ai fait un blackjack avec Ruby (j'ai essayé d'utiliser minitest)
J'ai essayé Eclipse MicroProfile OpenAPI avec WildFly Swarm
J'ai essayé de casser le bloc avec java (1)
J'ai essayé de démarrer avec Gradle sur Heroku
J'ai essayé ce que je voulais essayer avec Stream doucement.
[J'ai essayé] Tutoriel de printemps
J'ai essayé d'implémenter le téléchargement de fichiers avec Spring MVC
J'ai essayé de lire et de sortir CSV avec Outsystems
J'ai essayé d'implémenter TCP / IP + BIO avec JAVA
J'ai essayé d'exécuter Autoware
J'ai essayé d'utiliser Gson
[Java 11] J'ai essayé d'exécuter Java sans compiler avec javac
J'ai démarré MySQL 5.7 avec docker-compose et j'ai essayé de me connecter
J'ai essayé QUARKUS immédiatement
J'ai essayé de démarrer avec Spring Data JPA
J'ai essayé d'utiliser TestNG
[Apprentissage automatique] J'ai essayé la détection d'objets avec Create ML [détection d'objets]
J'ai essayé Spring Batch
J'ai essayé d'utiliser Galasa
J'ai essayé de dessiner une animation avec l'API Blazor + canvas
J'ai essayé OCR de traiter un fichier PDF avec Java
J'ai essayé d'implémenter Sterling Sort avec Java Collector
J'ai essayé node-jt400 (Programmes)
J'ai essayé node-jt400 (exécuter)
NLP4J [006-030] 100 coups de traitement du langage avec NLP4J # 30 Lecture des résultats d'analyse morphologique