Wenn Sie Wörter in Python zählen möchten, können Sie bequem Counter verwenden.

Ich habe mit Mecab gespielt und es gefunden, als ich dachte, es sei okay, also mach dir eine Notiz.

Es kann Text oder CSV sein, aber ich denke, es ist selten, dass Sie Code schreiben möchten, der die Häufigkeit des Auftretens jedes Elements in einer Liste mit Duplikaten zählt. Wenn Sie es gehorsam mit einem Wörterbuch implementieren


data = ['aaa', 'bbb', 'ccc', 'aaa', 'ddd']

word_and_counts = {}
for word in data:
    if word_and_counts.has_key(word):
        word_and_counts[word] += 1
    else:
        word_and_counts[word] = 1
for w, c in sorted(word_and_counts.iteritems(), key=lambda x: x[1], reverse=True):
    print w, c  # =>
                #   aaa 2
                #   bbb 1
                #   ccc 1
                #   ddd 1

Ich denke es wird so sein.

In einem solchen Fall ist das Sammlungsmodul praktisch. Implementieren Sie es also mithilfe von Sammlungen erneut.

from collections import Counter

data = ['aaa', 'bbb', 'ccc', 'aaa', 'ddd']
counter = Counter(data)
for word, cnt in counter.most_common():
    print word, cnt # =>
                    #   aaa 2
                    #   bbb 1
                    #   ccc 1
                    #   ddd 1

Ich konnte es präzise umsetzen. Darüber hinaus scheint es früh zu sein, weil es eingebaut ist. Außerdem hat Counter verschiedene andere Operatoren und bequeme Methoden.

from collections import Counter

dataA = ['aaa', 'bbb', 'ccc', 'aaa', 'ddd']
dataB = ['aaa', 'bbb', 'bbb', 'bbb', 'abc']

counterA = Counter(dataA)
counterB = Counter(dataB)

counter = counterA + counterB  #Die Frequenz kann hinzugefügt werden
counterA.subtract(counterB)  #Nehmen Sie den Unterschied zwischen Elementen (destruktive Methode)
counter.most_common(3)  #Holen Sie sich die Top 3 Elemente (wie im obigen Beispiel, wenn Sie das Weglassen des Arguments n weglassen, erhalten Sie alle Elemente in absteigender Reihenfolge)
#Einige andere

Jedes Objekt, das gehasht werden kann, ist in Ordnung. Vielleicht gibt es also andere gute Verwendungszwecke?

Außerdem hat das Sammlungsmodul einige nützliche Klassen, die gut aussehen, daher denke ich, dass es manchmal nützlich ist, es einmal zu lesen.

Mit Counter sieht der Code, den ich Mecab im Tweet-Verlauf des heruntergeladenen Twitter ausprobiert habe, wie folgt aus.

# -*- coding: utf-8 -*-

from collections import Counter
import codecs
import json

import MeCab


#Ich habe ein schlechtes Know-how, möchte aber das Ausgabeergebnis umleiten
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

#Codecs geben Unicode zurück
#In der ersten Zeile befindet sich eine zusätzliche Beschreibung. Es handelt sich um einen langwierigen Testcode, der problematisch ist. Löschen Sie ihn daher im Voraus
_tweetfile = codecs.open('./data/js/tweets/2013_09.js', 'r', 'sjis')
tweets = json.load(_tweetfile)
#Mecab akzeptiert nur den Typ str, also codieren
texts = (tw['text'].encode('utf-8') for tw in tweets)

tagger = MeCab.Tagger('-Ochasen')
counter = Counter()
for text in texts:
    nodes = tagger.parseToNode(text)
    while nodes:
        if nodes.feature.split(',')[0] == 'Substantiv':
            word = nodes.surface.decode('utf-8')
            counter[word] += 1
        nodes = nodes.next
for word, cnt in counter.most_common():
    print word, cnt

Der Teil, der unterscheidet, ob es sich um eine Nomenklatur handelt, ist langweilig oder das Symbol wird eingefügt, hat aber vorerst gut funktioniert. Ich bin glücklich.


Ich habe diese Tricks zusammengestellt. Wenn es Ihnen nichts ausmacht, bitte (Häufige Redewendungen, die den Python-Code ein wenig sauberer machen, wenn Sie sich nur daran erinnern)

Recommended Posts

Wenn Sie Wörter in Python zählen möchten, können Sie bequem Counter verwenden.
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
Wenn Sie einer Variablen in Python einen CSV-Export zuweisen möchten
Was tun, wenn Sie die Rastersuche von sklearn in Python nicht verwenden können?
Verwenden Sie PIL in Python, um nur die gewünschten Daten aus Exif zu extrahieren
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Wenn Sie Cython verwenden möchten, schließen Sie auch python-dev ein
Ich möchte R-Datensatz mit Python verwenden
[Road to Intermediate Python] Verwenden Sie die if-Anweisung in der Listeneinschlussnotation
Wenn Sie möchten, dass Ihre Kollegen dieselbe Sprache verwenden
Eine Funktionsnotiz, die nützlich ist, wenn Sie den Debugger aufrufen möchten, wenn beim Ausführen eines Python-Skripts ein Fehler auftritt.
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten
Möchten Sie mit Python Selenium auf allgemeine Zwecke warten?
Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten
Was tun, wenn in Python minus Null angezeigt wird?
Ich möchte wissen, ob Sie Python auf Mac ・ Iroha installieren
Unverzichtbar, wenn Sie Python verwenden! Wie man Numpy benutzt, um Berechnungen zu beschleunigen!
Überprüfen Sie, ob Sie in Python eine Verbindung zu einem TCP-Port herstellen können
Was tun, wenn Sie den Papierkorb in Lubuntu 18.04 nicht verwenden können?
Wenn Sie einen go table-gesteuerten Test in Python schreiben, ist es möglicherweise besser, subTest zu verwenden
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Ich möchte ein Glas aus Python verwenden
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
Verwendung von __slots__ in der Python-Klasse
Verwendung regulärer Ausdrücke in Python
Verwendung ist und == in Python
Wenn Sie einen Singleton in Python möchten, stellen Sie sich das Modul als Singleton vor
Wenn Sie awsebcli in CircleCI aufnehmen möchten, geben Sie die Python-Version an
Wenn Sie NumPy, Pandas, Matplotlib, IPython, SciPy unter Windows verwenden möchten
[Python] Wenn Sie ein Streudiagramm mehrerer Cluster zeichnen möchten
Wenn Sie mehrere Statistiken mit groupby of pandas v1 erhalten möchten
Fügen Sie dem Benutzerwörterbuch von MeCab unter Ubuntu Wörter zur Verwendung in Python hinzu
Verwendung der C-Bibliothek in Python
Ich möchte Dunnetts Test in Python machen
So erstellen Sie eine Umgebung, wenn Sie Python2.7 nach der Installation von Anaconda3 verwenden möchten
Ich möchte MATLAB feval mit Python verwenden
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Ich möchte mit Python ein Fenster erstellen
Verwendung der Python-Bildbibliothek in der Python3-Serie
Wenn Sie den Wert mithilfe von Auswahlmöglichkeiten in der Vorlage im Django-Modell anzeigen möchten
Wenn Sie Word Cloud erstellen möchten.
Zusammenfassung der Verwendung von MNIST mit Python
Es ist praktisch, stac_info und exc_info zu verwenden, wenn Sie Traceback in der Protokollausgabe durch Protokollierung anzeigen möchten.
Ich möchte verschachtelte Dicts in Python zusammenführen
Verwenden Sie ein Kryptografiemodul, das OpenSSL in Python verarbeitet
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte Ceres Solver aus Python verwenden
Wie man tkinter mit Python in Pyenv benutzt
Was tun, wenn "Python nicht konfiguriert" angezeigt wird? Verwenden von PyDev in Eclipse
Wenn Sie die Plot-Funktion von Pandas in Python verwenden, ist sie von der Datenverarbeitung bis zur Diagrammerstellung wirklich nahtlos
Ich möchte den Fortschritt in Python anzeigen!
Sie sollten wissen, ob Sie Python verwenden! 10 nützliche Bibliotheken
Verwenden Sie os.getenv, um Umgebungsvariablen in Python abzurufen
Was tun, wenn in Hydrogen "Kein Kernel für Sprachpython gefunden" angezeigt wird?
Ich möchte eine Python-Datenquelle in Re: Dash verwenden, um Abfrageergebnisse zu erhalten