Suchen Sie nach Synonymen aus der Wortliste (csv) von Python Japanese WordNet

Was ich getan habe

Implementierter Code zum Erkennen von Synonymen mithilfe des japanischen WordNet. Die Spezifikation verwendet eine CSV-Datei mit Wörtern als Eingabe, sucht nach Synonymen aus der Wortgruppe, listet sie auf und gibt eine Liste von Synonymen als Text aus. Die Implementierung basiert hauptsächlich auf dem Material von hier.

Über WordNet

Japanisches WordNet kennen Da das Netzwerk visualisiert wird, ist es leicht intuitiv vorstellbar. Wenn Sie an der Definition von WordNet interessiert sind, lesen Sie diese bitte.

Hier ist die offizielle Website. Ein japanisches Bedeutungswörterbuch, das von der Informations- und Kommunikationsforschungsorganisation (NICT) der National Research and Development Corporation entwickelt wurde. Für diese Implementierung muss die offizielle Website [Japanisches Wordnet und englisches WordNet in einer SQLite3-Datenbank] heruntergeladen werden (http://compling.hss.ntu.edu.sg/wnja/data/1.1/wnjpn.db.gz). .. Dateiname herunterladen: wnjpn.db.gz Wenn Sie dies entpacken, können Sie die Datenbankdatei der Wörterbuchdaten abrufen. Durch Laden dieser Datenbank mit Python können Synonyme erkannt werden.

Implementierung

create_similar_words.py


import sqlite3
import csv
import re
#DB-Verbindung
conn = sqlite3.connect("wnjpn.db")
# ui
csvfile = 'words.csv'
outfile = 'similar_words.txt'

'''functions
csv_input:Rückgabeliste durch Eingabe von csv
SearchSimilarWords:Erstellen Sie eine Synonymliste und geben Sie sie zurück
create_similar_wordlst:Synonymlistenformung
save_synonyms:Synonymliste speichern
'''

def csv_input(path_name):
    rows = []
    with open(path_name,encoding='utf-8') as f:
        reader = csv.reader(f)
        for row in reader:
            rows.append(row)
    return rows


def SearchSimilarWords(word):
    word = ','.join(word)
    cur = conn.execute("select wordid from word where lemma='%s'" % word)
    word_id = 99999999  #temp
    for row in cur:
        word_id = row[0]

    #Feststellen, ob das Wort in Wordnet vorhanden ist
    if word_id==99999999:
        return
    cur = conn.execute("select synset from sense where wordid='%s'" % word_id)
    synsets = []
    for row in cur:
        synsets.append(row[0])
    simdict = []
    for synset in synsets:
        cur1 = conn.execute("select name from synset where synset='%s'" % synset)
        cur2 = conn.execute("select def from synset_def where (synset='%s' and lang='jpn')" % synset)
        cur3 = conn.execute("select wordid from sense where (synset='%s' and wordid!=%s)" % (synset,word_id))
        for row3 in cur3:
            target_word_id = row3[0]
            cur3_1 = conn.execute("select lemma from word where wordid=%s" % target_word_id)
            for row3_1 in cur3_1:
                #Speichern Sie ähnliche Wörter in einer Liste
                simdict.append(row3_1[0])
    return simdict


def create_similar_wordlst(full_word):
    parent = []
    child = []
    with open(csvfile, encoding='utf-8') as f:
        reader = csv.reader(f)
        for row in reader:
            child = []
            synonym = SearchSimilarWords(row)
            if not synonym is None:
                row = ','.join(row)
                child.append(row)
                for f_row in full_word:
                    f_row = ','.join(f_row)
                    for syn in synonym:
                        if f_row == syn:
                            child.append(syn)
            if len(child) > 1:
                parent.append(set(child))
    # print(parent)
    return parent


def save_synonyms(lst):
    norlst = []
    for row in lst:
        row = list(row)
        row = ','.join(row)
        norlst.append(row)
    norlst = set(norlst)
    with open(outfile, mode='w') as f:
        for row in norlst:
            f.write(row+'\n')


def main():
    full_word = csv_input(csvfile)
    save_synonyms(create_similar_wordlst(full_word))


if __name__ == "__main__":
    main()

Ordnerstruktur

create_similar_words.py wards.csv wnjpn.db

Beispiel für eine Eingabedatei

Dieses Mal wird für eine einfache Implementierung angenommen, dass die Zeichenfolge nur in eine Spalte eingefügt wird. Darüber hinaus ist es ein Mechanismus zum Suchen nach Synonymen innerhalb der Zeichen in ** words.csv. ** ** **

words.csv


Entwicklung von
Entwicklung
・
・
・
zusammenkommen
Herde
Takaru

Beispiel für eine Ausgabedatei

similar_words.csv


Entwicklung von,Entwicklung
・
・
・
zusammenkommen,Herde,Takaru

Zusammenfassung

Ich habe ein Skript erstellt, das nach Synonymen in Zeichen in CSV sucht und diese in CSV ausgibt. Wenn Sie Fragen oder Mängel in der Implementierung haben, weisen Sie bitte darauf hin. LGTM ist auch willkommen! Danke fürs Lesen.

Recommended Posts

Suchen Sie nach Synonymen aus der Wortliste (csv) von Python Japanese WordNet
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
Lösen Sie das japanische Problem, wenn Sie das CSV-Modul in Python verwenden.
[Python] Beherrsche das Lesen von CSV-Dateien. Liste der Hauptoptionen für pandas.read_csv.
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Python-Pandas: Suchen Sie mit regulären Ausdrücken nach DataFrame
Verbesserte Suche nach Pokemon-Rennwerten mit Python
Rufen Sie Polly aus dem AWS SDK für Python auf
[Python] So entfernen Sie doppelte Werte aus der Liste
Python: Japanischer Text: Charakteristisch für Sprache aufgrund von Wortähnlichkeit
[Boto3] Suchen Sie mit der List Users API nach Cognito-Benutzern
Python: Japanischer Text: Charakteristisch für Sprache aus Wortkontinuität
Studie aus Python Hour8: Verwenden von Paketen
Python-Fehlerliste (Japanisch)
Suchen Sie Twitter mit Python
Analysieren Sie die Researchmap-API mit Python und erstellen Sie automatisch eine Word-Datei für die Leistungsliste
Python + ImageMagick> Zeichen aus der Zeichenliste im BMP-Format ausschneiden (für die BMP-Konvertierung von Shinonome-Schriftarten)
Steuern Sie Smart Light "Yeelight" von Python aus, ohne die Cloud zu verwenden
Konvertieren Sie mit Python für .NET von Pandas DataFrame in System.Data.DataTable
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien
Kopieren Sie mit Python rekursiv Dateien aus dem Verzeichnis direkt unter dem Verzeichnis
Verschiedene Hinweise zur Verwendung von Python für Projekte
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Ausgabe von Produktinformationen an csv mithilfe der Rakuten-Produktsuch-API [Python]
Extrahieren Sie den Wert, der einem Wert am nächsten kommt, aus einem Listenelement in Python
Mit Python abflachen
Python-Liste, für Anweisung, Wörterbuch
Lassen Sie uns von der Linie suchen
Suchliste nach doppelten Elementen
Suchalgorithmus mit word2vec [Python]
Python #Liste für Super-Anfänger
tesseract-OCR für Python [japanische Version]
Holen Sie sich japanische Synonyme mit Python
Suchen Sie mit Pythonista3 nach einem Bild von der Kamerarolle
Ich habe versucht, Kwant zu verwenden, ein Python-Modul für die Quantentransportberechnung
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
[Python] LINE-Benachrichtigung über die neuesten Informationen mithilfe der automatischen Suche von Twitter
[Hikari-Python] Kapitel 05-03 Steuerungssyntax (zum Abrufen von Elementen aus der Liste-)
Lassen Sie uns vorerst Googles Vision API von Python berühren
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Python Hinweis: Map - Machen Sie dasselbe für jedes Element der Liste
Liste der Katastrophenfälle der Feuerwehr von Sapporo City [Python]
Speichern, Wiederherstellen und Abfragen der Suche von Python-Klasseninstanzen mit mongodb
Versuchen Sie vorerst, FireBase Cloud Firestore mit Python zu verwenden