Extraction de mots-clés par MeCab (python)

Voici le fichier Excel. Il est sorti d'un certain DB, et chaque ligne contient un enregistrement et un champ contient des phrases. Le thème cette fois est d'extraire les mots-clés fréquemment utilisés des phrases de ce champ, de compter le nombre d'apparitions pour chaque mot-clé et de les classer.

L'entrée et la sortie sont des fichiers Windows Excel, et le milieu se fait sur Mac.

Quoi préparer

Faites-le dans votre environnement habituel.

Je prévois de traiter les données avec des pandas plus tard, j'utilise donc utf-8 ou des pandas.

Sortie vers csv à partir du fichier xls correspondant

Cela vient du menu Excel. test.xls -> test.csv

Changer le code de caractère de sjis en utf-8

$ nkf -g test.csv
Shift_JIS
$ nkf -w test.csv > test_utf8.csv
$ nkf -g test_utf8.csv
UTF-8

Charger csv avec python

import pandas as pd 

csv_file = 'test.csv'
df = pd.read_csv(csv_file, encoding='utf-8', header=1)

Décomposer et compter par nomenclature et verbe

installer mecab

brew search mecab

pip search mecab
pip install mecab-python 

... Successfully installed mecab-python-0.996 C'est OK de sortir. Vous pouvez maintenant l'utiliser avec python (série 2.x).

import MeCab

def count_word(df):
	e = df[u'commentaire']
	dic_n = {}
	dic_v = {}
	m = MeCab.Tagger('-Ochasen')	#Mettez la sortie en mode Chasen
	
	for s in e:
		if type(s) != unicode:
			continue
		s8 = s.encode('utf-8')
		print s8
		node = m.parseToNode(s8)
		while node:
			word=node.feature.split(',')[0]
			key = node.surface
			if word=='nom':
				dic = dic_n
				print "<", key, "> (n)"
			elif word=='verbe':
				dic = dic_v
				print "<", key, "> (v)"
			else:
				node = node.next
				continue
			if dic.has_key(key):
				dic[key] += 1
			else:
				dic[key] = 1
			node = node.next
	return dic_n, dic_v

Écrire dans csv dans l'ordre décroissant d'apparence (utf-8)

import csv

def write_to_csv(dic, csv_file):
	f = open(csv_file, 'w')
	writer = csv.writer(f, lineterminator='\n')
	
	#Trier par valeur
	for k,v in sorted(dic.items(), key=lambda x:x[1], reverse=True):
		print k, v
		writer.writerow([k, v])
	f.close()

write_to_csv(dic_n, 'test_dic_n_utf8.csv')
write_to_csv(dic_v, 'test_dic_v_utf8.csv')

Convertir en sjis

$ nkf -g test_dic_n_utf8.csv 
UTF-8
$ nkf -s test_dic_n_utf8.csv > test_dic_n_sjis.csv
$ nkf -g test_dic_n_sjis.csv 
Shift_JIS

Convertir au format xls

Ouvrez test_dic_n_sjis.csv dans Excel et enregistrez-le dans xls.

fin.

Site de référence

http://qiita.com/tstomoki/items/f17c04bd18699a6465be http://qiita.com/ysk_1031/items/7f0cfb7e9e4c4b9129c9 http://salinger.github.io/blog/2013/01/17/1/ [^1]

[^ 1]: Notez qu'il y avait une note sur ce site. `Si vous voulez gérer des chaînes Unicode avec MeCab, vous devez les encoder une fois. À ce stade, si node = tagger.parseToNode (string.encode ("utf-8")), notez que la chaîne peut être engloutie pendant l'analyse, ce qui entraîne un comportement étrange. Il n'y a aucun problème si vous l'affectez une fois à une variable de cette manière. `` `

Recommended Posts

Extraction de mots-clés par MeCab (python)
Extraction de mots-clés facile avec TermExtract pour Python
MeCab de Python
Mémorandum d'extraction par requête python bs4
Jugement des nombres premiers par Python
Mémo de visualisation par Python
Traitement de la communication par Python
Utiliser mecab avec Python 3
Réponse de Beamformer par python
[Python] Analyse morphologique avec MeCab
API Web EXE par Python
Rendre MeCab disponible à partir de Python 3
Programme de formation des nouveaux arrivants par Python
Pin python géré par conda
Séparez les nombres par 3 chiffres (python)
Modèle de commutation de Markov par Python
Traitement d'image par python (Pillow)
Python lancé par des programmeurs C
Arguments de mots-clés pour les fonctions Python
[Python] Référence Numpy, extraction, combinaison
Jugement de la plateforme (OS) par Python
Trier par date en python
Extraction d'objets dans l'image par correspondance de modèles en utilisant OpenCV avec Python
[Python] Tri itérable selon plusieurs conditions
Extension du dictionnaire python par argument
Mettez MeCab dans "Windows 10; Python3.5 (64 bits)"
Extraction de texte avec AWS Textract (Python3.6)
Remarques sur l'utilisation de MeCab depuis Python
Résumé de l'apprentissage automatique par les débutants de Python
Apprenez Python en dessinant (Turtle Graphics)
Générateur de nombres premiers par Python
python + django + scikit-learn + mecab (1) avec heroku
Windows10: Installation de la bibliothèque MeCab pour python
python + django + scikit-learn + mecab (2) avec heroku
Autoriser l'accès aux attributs à Python dict
Détermination du système d'exploitation par Makefile en utilisant Python
Mémo d'automatisation de saisie par Python débutant
Mecab / Cabocha / KNP sur Python + Windows
Mémo d'apprentissage de la planification des sections ~ par python ~
10 sélections d'extraction de données par pandas.DataFrame.query
Comportement de python3 par le serveur de Sakura
100 Language Processing Knock Chapitre 1 par Python
Lors de l'utilisation de MeCab avec python dans virtualenv
Histoire d'approximation de puissance par Python
Tri des fichiers par convention de dénomination à l'aide de Python