Clustertext in Python

from janome.tokenizer import Tokenizer
from sklearn.feature_extraction.text import TfidfVectorizer
from scipy.cluster.hierarchy import linkage, fcluster

Daten lesen

Es wird davon ausgegangen, dass ein Dokument in einer Zeile in input.txt beschrieben wird.

with open('input.txt') as f:
    org_sentences = f.readlines()

Morphologische Analyse

Trennen Sie jedes Dokument mit einem Abstand von halber Breite für jedes Wort.

t = Tokenizer()
sentences = []
for s in org_sentences:
    tmp = ' '.join(t.tokenize(s, wakati=True))
    sentences.append(tmp)

Vektorisierung

Dieses Mal wird Tf-Idf verwendet, um das Dokument zu vektorisieren. Es gibt andere Mittel wie BoW / LSI / LDA / Word2Vec-Durchschnitt / Doc2Vec / FastText-Durchschnitt / BERT.

vectorizer = TfidfVectorizer(use_idf=True, token_pattern=u'(?u)\\b\\w+\\b')
vecs = vectorizer.fit_transform(sentences)
v = vecs.toarray()

Entfernungsberechnung

Der Kosinusabstand, der bei Verarbeitungsaufgaben in natürlicher Sprache üblich ist, definiert den Abstand zwischen jedem Vektor. Basierend auf dieser Entfernung werden Dokumente durch hierarchisches Clustering (Single-Link-Methode) zu Clustern gebündelt.

z = linkage(v, metric='cosine')

Clustering

Ein Beispiel, in dem der endgültige Cluster mit einem Abstand von 0,2 als Schwellenwert bestimmt wird. Wenn die Anzahl der Dokumente sehr groß wird, dauert die Berechnung der Entfernung sehr lange. Wenn Sie daher mehrere Schwellenwerte ausprobieren möchten, sollten Sie dies überprüfen, indem Sie das obige Ergebnis der Entfernungsberechnung in pickle speichern. Es ist auch möglich, die Anzahl der Cluster als Schwellenwert zu verwenden. Die Clusternummer jedes Dokuments wird in einer Gruppe gespeichert.

group = fcluster(z, 0.2, criterion='distance')
print(group)

Recommended Posts

Clustertext in Python
Textverarbeitung mit Python
UTF8-Textverarbeitung mit Python
Sprechen mit Python [Text zu Sprache]
GOTO in Python mit erhabenem Text 3
Extrahieren Sie mit Python Text aus Bildern
Sortieren Sie große Textdateien in Python
Lesen und Schreiben von Text in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Versuchen Sie, Ihr Tagebuch mit Python zu durchsuchen
Lesen von Zeichen in Bildern mit Python OCR
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Bearbeiten Sie Schriftarten in Python