Die Twitter-Timeline ist eine txt-Datei. Die Zeitleiste mehrerer Benutzer wird in einem Ordner gespeichert. Das Ziel dieser Zeit ist es, alle diese Dateien mit MeCab zu analysieren.
Ich habe die Zeitleiste wie im nächsten Artikel. [Python] Twitter-Timeline für mehrere Benutzer abrufen
Verwenden Sie für die morphologische Analyse die morphologische Analyse-Engine 'MeCab'. Wie auf Mac verwenden Mecab-Installationsverfahren Ich durfte mich beziehen.
Holen Sie sich die Liste der Dateinamen im Ordner in die Liste der Python
Eine Funktion, die aus einer Liste von Dateinamen eine Liste von Zeitleisten erstellt
Morphologische Analysefunktion
Morphologische Analyse aller Dateien im Ordner
Die Datei'timelines 'enthält alle txt-Dateien, mit denen Sie arbeiten möchten. Speichern Sie diese Dateinamen (Zeichenfolgen) in der Liste 'Dateinamen'.
import glob
file_names=[]
files = glob.glob("./timelines/*")
for file in files:
file_names.append(file)
Die erhaltenen Dateinamen haben die folgende Form.
['./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
Definiert eine Funktion für die morphologische Analyse. Das Argument der Funktion ist eine Zeichenfolge, und der Rückgabewert ist eine Liste der Ergebnisse der morphologischen Analyse.
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
Lassen Sie uns den Betrieb der Funktion 'mecab_list' überprüfen.
print(mecab_list('Ich esse oft Katzen, die ich gestern zu halten begonnen habe.'))
'''
Ergebnis
[['gestern', 'Substantiv', 'Anwalt möglich', '*', 'gestern'], ['Domestizierung', 'Verb', 'Unabhängigkeit', '*', 'behalten'], ['Start', 'Verb', '非Unabhängigkeit', '*', 'Startる'], ['Ta', '助Verb', '*', '*', 'Ta'], ['Katze', 'Substantiv', 'Allgemeines', '*', 'Katze'], ['Ist', 'Partikel', '係Partikel', '*', 'Ist'], ['Häufig', 'Adverb', 'Allgemeines', '*', 'Häufig'], ['Essen', 'Verb', 'Unabhängigkeit', '*', 'Essen'], ['。', 'Symbol', 'Phrase', '*', '。']]
Es scheint kein Problem zu geben.
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)
#Ergebnis
[[[['w', 'Symbol', 'Alphabet', '*', 'w'], ['noch', 'Adverb', 'Hilfsanschluss', '*', 'noch'], ['Sub', 'Substantiv', '固有Substantiv', 'Bereich', 'Sub'], ['Samen', 'Substantiv', 'Suffix', 'Allgemeines', 'Samen'], ['?', 'Symbol', 'Allgemeines', '*', '?'], ['Aber', 'Partikel', '格Partikel', 'Allgemeines', 'Aber'],..,]]]]
Ich habe das gewünschte Ergebnis erzielt.
macOS Catalina Jupyter notebook
Recommended Posts