La chronologie Twitter est un fichier txt. La chronologie de plusieurs utilisateurs est stockée dans un dossier. Le but de cette fois est d'analyser tous ces fichiers à l'aide de MeCab.
J'ai eu la chronologie comme dans l'article suivant. [python] Obtenez la chronologie Twitter pour plusieurs utilisateurs
Pour l'analyse morphologique, utilisez le moteur d'analyse morphologique «MeCab». Comment utiliser sur Mac procédure d'installation de mecab J'ai été autorisé à faire référence.
Obtenez la liste des noms de fichiers dans le dossier dans la liste de python
Une fonction qui crée une liste de chronologies à partir d'une liste de noms de fichiers
Fonction d'analyse morphologique
Analyse morphologique de tous les fichiers du dossier
Le fichier 'lignes de temps' contient tous les fichiers txt avec lesquels vous souhaitez travailler. Stockez ces noms de fichiers (chaînes de caractères) dans la liste "noms_fichiers".
import glob
file_names=[]
files = glob.glob("./timelines/*")
for file in files:
file_names.append(file)
Les noms de fichier obtenus ont la forme suivante.
['./timelines/20191210_user0_***.txt',..,'./timelines/20191210_user199_***.txt']
timelines.py
def timelines(file_list):
timelines=[]
for file in file_list:
text=open(file).read()
open(file).close()
timelines.append([text])
return timelines
Définit une fonction pour l'analyse morphologique. L'argument de la fonction est une chaîne de caractères et la valeur de retour est une liste de résultats d'analyse morphologique.
mecab_list.py
import MeCab
def mecab_list(text):
tagger = MeCab.Tagger("-Ochasen")
tagger.parse('')
node = tagger.parseToNode(text)
mecab_output = []
while node:
word = node.surface
wclass = node.feature.split(',')
if wclass[0] != u'BOS/EOS':
if wclass[6] == None:
mecab_output.append([word,wclass[0],wclass[1],wclass[2],""])
else:
mecab_output.append([word,wclass[0],wclass[1],wclass[2],wclass[6]])
node = node.next
return mecab_output
Vérifions le fonctionnement de la fonction "liste_mecab".
print(mecab_list('Je mange souvent des chats que j'ai commencé à garder hier.'))
'''
résultat
[['hier', 'nom', 'Avocat possible', '*', 'hier'], ['Domestication', 'verbe', 'Indépendance', '*', 'garder'], ['Commencer', 'verbe', '非Indépendance', '*', 'Commencerる'], ['Ta', '助verbe', '*', '*', 'Ta'], ['chat', 'nom', 'Général', '*', 'chat'], ['Est', 'Particule', '係Particule', '*', 'Est'], ['Souvent', 'adverbe', 'Général', '*', 'Souvent'], ['manger', 'verbe', 'Indépendance', '*', 'manger'], ['。', 'symbole', 'Phrase', '*', '。']]
Il ne semble y avoir aucun problème.
mecab_results_list=[]
the_timelines=timelines(file_names)
for the_timeline in the_timelines:
mecab_result=[]
for twt in the_timeline:
mecab_result.append(mecab_list(twt))
mecab_results_list.append(mecab_result)
print(mecab_results_list)
#résultat
[[[['w', 'symbole', 'Alphabet', '*', 'w'], ['encore', 'adverbe', 'Connexion auxiliaire', '*', 'encore'], ['Sous', 'nom', '固有nom', 'zone', 'Sous'], ['la graine', 'nom', 'suffixe', 'Général', 'la graine'], ['?', 'symbole', 'Général', '*', '?'], ['Mais', 'Particule', '格Particule', 'Général', 'Mais'],..,]]]]
J'ai eu le résultat que je voulais.
macOS Catalina Jupyter notebook
Recommended Posts