3. Verarbeitung natürlicher Sprache durch Python 3-1. Wichtiges Tool zur Wortextraktion TF-IDF-Analyse [Originaldefinition]

⑴ Die Idee von TF-IDF

⑵ Definition des TF-IDF-Wertes

** Häufigkeit des Auftretens $ tf $ multipliziert mit dem Seltenheitsindex $ idf $ **

** Die Häufigkeit des Auftretens $ tf $ und der Koeffizient $ idf $ sind wie folgt definiert **

(3) Berechnungsmechanismus nach der ursprünglichen Definition

#Import der numerischen Berechnungsbibliothek
from math import log
import pandas as pd
import numpy as np

➀ Bereiten Sie eine Wortdatenliste vor

docs = [
        ["Wort 1", "Wort 3", "Wort 1", "Wort 3", "Wort 1"],
        ["Wort 1", "Wort 1"],
        ["Wort 1", "Wort 1", "Wort 1"],
        ["Wort 1", "Wort 1", "Wort 1", "Wort 1"],
        ["Wort 1", "Wort 1", "Wort 2", "Wort 2", "Wort 1"],
        ["Wort 1", "Wort 3", "Wort 1", "Wort 1"]
        ]

N = len(docs)

words = list(set(w for doc in docs for w in doc))
words.sort()

print("Anzahl der Dokumente:", N)
print("Zielwörter:", words)

image.png

➁ Definieren Sie eine Berechnungsfunktion

#Definition der Funktion tf
def tf(t, d):
    return d.count(t)/len(d)
 
#Definition der Funktion idf
def idf(t):
    df = 0
    for doc in docs:
        df += t in doc
    return np.log10(N/df)
 
#Definition der Funktion tfidf
def tfidf(t, d):
    return tf(t,d) * idf(t)

➂ Beachten Sie das Berechnungsergebnis von TF

#Berechne tf
result = []
for i in range(N):
    temp = []
    d = docs[i]
    for j in range(len(words)):
        t = words[j]     
        temp.append(tf(t,d))
    result.append(temp)
       
pd.DataFrame(result, columns=words)

image.png

➃ Beachten Sie die IDF-Berechnungsergebnisse

#IDf berechnen
result = []
for j in range(len(words)):
    t = words[j]
    result.append(idf(t))

pd.DataFrame(result, index=words, columns=["IDF"])

image.png

➄ TF-IDF-Berechnung

#Berechnen Sie tfidf
result = []
for i in range(N):
    temp = []
    d = docs[i]
    for j in range(len(words)):
        t = words[j]
        temp.append(tfidf(t,d))   
    result.append(temp)

pd.DataFrame(result, columns=words)

image.png

⑷ Berechnung durch Scikit-Learn

# scikit-lerne TF-IDF-Bibliothek importieren
from sklearn.feature_extraction.text import TfidfVectorizer
#Eindimensionale Liste
docs = [
        "Wort 1 Wort 3 Wort 1 Wort 3 Wort 1",
        "Wort 1 Wort 1",
        "Wort 1 Wort 1 Wort 1",
        "Wort 1 Wort 1 Wort 1 Wort 1",
        "Wort 1 Wort 1 Wort 2 Wort 2 Wort 1",
        "Wort 1 Wort 3 Wort 1 Wort 1"
        ]

#Modell generieren
vectorizer = TfidfVectorizer(smooth_idf=False)
X = vectorizer.fit_transform(docs)

#In einem Datenrahmen dargestellt
values = X.toarray()
feature_names = vectorizer.get_feature_names()
pd.DataFrame(values,
             columns = feature_names)

image.png

⑸ Reproduzieren Sie das Ergebnis von Scikit-Learn

➀ IDF-Formel geändert

#Definition der Funktion idf
def idf(t):
    df = 0
    for doc in docs:
        df += t in doc
    #return np.log10(N/df)
    return np.log(N/df)+1
#IDf berechnen
result = []
for j in range(len(words)):
    t = words[j]
    result.append(idf(t))

pd.DataFrame(result, index=words, columns=["IDF"])

image.png

➁ Beachten Sie das Berechnungsergebnis von TF-IDF

#Berechnen Sie tfidf
result = []
for i in range(N):
    temp = []
    d = docs[i]
    for j in range(len(words)):
        t = words[j]
        temp.append(tfidf(t,d))   
    result.append(temp)

pd.DataFrame(result, columns=words)

image.png

➂ L2-Regularisierung der TF-IDF-Berechnungsergebnisse

#Berechnen Sie den Normwert gemäß der Definition nur in Dokument 1 als Versuch
x = np.array([0.60, 0.000000, 0.839445])
x_norm = sum(x**2)**0.5
x_norm = x/x_norm
print(x_norm)

#Quadrieren Sie sie und addieren Sie sie, um sicherzustellen, dass sie 1 sind
np.sum(x_norm**2)

image.png

# scikit-Importieren Sie die Regularisierungsbibliothek
from sklearn.preprocessing import normalize

#L2-Regularisierung
result_norm = normalize(result, norm='l2')

#In einem Datenrahmen dargestellt
pd.DataFrame(result_norm, columns=words)

image.png

Recommended Posts

3. Verarbeitung natürlicher Sprache durch Python 3-1. Wichtiges Tool zur Wortextraktion TF-IDF-Analyse [Originaldefinition]
3. Verarbeitung natürlicher Sprache durch Python 1-1. Word N-Gramm
3. Verarbeitung natürlicher Sprache durch Python 2-1. Netzwerk für das gleichzeitige Auftreten
3. Verarbeitung natürlicher Sprache durch Python 2-2. Koexistenznetzwerk [mecab-ipadic-NEologd]
[Python] Ich habe mit der Verarbeitung natürlicher Sprache ~ Transformatoren ~ gespielt
Python: Verarbeitung natürlicher Sprache
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
100 Sprachverarbeitungsklopfen mit Python 2015
Verarbeitung natürlicher Sprache 1 Morphologische Analyse
Verarbeitung natürlicher Sprache 3 Wortkontinuität
Verarbeitung natürlicher Sprache 2 Wortähnlichkeit
Studieren Sie die Verarbeitung natürlicher Sprache mit Kikagaku
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
[Verarbeitung natürlicher Sprache] Vorverarbeitung mit Japanisch
100 Sprachverarbeitung Knock-82 (Kontextwort): Kontextextraktion
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
Japanische Verarbeitung natürlicher Sprache mit Python3 (4) Emotionsanalyse durch logistische Regression
Dockerfile mit den notwendigen Bibliotheken für die Verarbeitung natürlicher Sprache mit Python
Fallstudie zur Verarbeitung natürlicher Sprache: Worthäufigkeit in 'Anne mit einem E'
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
Ich habe versucht, natürliche Sprache mit Transformatoren zu verarbeiten.
3. Verarbeitung natürlicher Sprache mit Python 1-2. So erstellen Sie einen Korpus: Aozora Bunko
Erste Schritte mit Python mit 100 Klopfen bei der Sprachverarbeitung
Bildverarbeitung von Grund auf mit Python (4) Konturextraktion
Python: Tiefes Lernen in der Verarbeitung natürlicher Sprache: Grundlagen
Lassen Sie uns die Verarbeitung natürlicher Sprache mit der COTOHA-API genießen
Die erste künstliche Intelligenz. Ich wollte die Verarbeitung natürlicher Sprache ausprobieren, daher werde ich die morphologische Analyse mit MeCab mit Python3 versuchen.
[Für Anfänger] Sprachanalyse mit dem Verarbeitungswerkzeug "GiNZA" (von der morphologischen Analyse bis zur Vektorisierung)
100 natürliche Sprachverarbeitung klopft Kapitel 4 Morphologische Analyse (erste Hälfte)
100 natürliche Sprachverarbeitung klopft Kapitel 4 Morphologische Analyse (zweite Hälfte)
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
100 natürliche Sprachverarbeitung klopft Kapitel 5 Abhängigkeitsanalyse (zweite Hälfte)
100 natürliche Sprachverarbeitung klopft Kapitel 5 Abhängigkeitsanalyse (erste Hälfte)
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Verwenden Sie die Swagger-Benutzeroberfläche. Wenn Sie einen Swagger-UI-ähnlichen Stil wünschen, kopieren Sie einfach die gesamte Datei unter / dist unter https://github.com/swagger-api/swagger-ui. Danach schreiben Sie einfach hier in index.html die URL der yml-Datei um. Wenn Sie der Meinung sind, dass Sie @ApiModel oder @ApiModelProperty nicht finden können, wurden übrigens anscheinend alle Anmerkungen zur Schemadefinition in @Schema integriert. Emotionsanalyse mit Java, Swagger, OpenAPI, Micronaut Natural Language Processing! Ich habe versucht, die Bewertung anhand des Überprüfungstextes vorherzusagen
Verarbeitung natürlicher Sprache (Originaldaten) mit Word2Vec, entwickelt von US-amerikanischen Google-Forschern
Sprachanalyse mit Python
RNN_LSTM2 Verarbeitung natürlicher Sprache
Bildverarbeitung mit Python
Sprachanalyse mit Python
Datenanalyse mit Python
[Übung] Erstellen Sie eine Watson-App mit Python! # 3 [Klassifizierung der natürlichen Sprache]
[Python] Versuchen Sie, Ramen-Shops durch Verarbeitung natürlicher Sprache zu klassifizieren
Erstellen Sie mit python wxpython + openCV ein einfaches Videoanalysetool
■ [Google Colaboratory] Vorverarbeitung der Verarbeitung natürlicher Sprache & Janome
Ich werde eine detaillierte Erklärung zum Tod schreiben, während ich 100 Python für die Verarbeitung natürlicher Sprache 2020 mit Python löse