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.
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.
Cela vient du menu Excel. test.xls -> test.csv
$ nkf -g test.csv
Shift_JIS
$ nkf -w test.csv > test_utf8.csv
$ nkf -g test_utf8.csv
UTF-8
import pandas as pd
csv_file = 'test.csv'
df = pd.read_csv(csv_file, encoding='utf-8', header=1)
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
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')
$ 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
Ouvrez test_dic_n_sjis.csv dans Excel et enregistrez-le dans xls.
fin.
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