Ich arbeite an einem Projekt, bei dem ich einen Satz oder ein Keyword mit einer Reihe ähnlicher Keywords abgleichen muss. Ich muss eine semantische Analyse für dasselbe durchführen.
ein Beispiel:
Relevantes QT
billige Krankenversicherung
erschwingliche Krankenversicherung
günstige Krankenversicherung
Gesundheitsplan für weniger
günstige Krankenversicherung
Gemeinsame Bedeutung
kostengünstige Krankenversicherung
Hier sollte das Wort in der Spalte Gemeinsame Bedeutung mit der Spalte Relevant QT übereinstimmen. Ich sah mir eine Reihe von Werkzeugen und Techniken an, um das Gleiche zu tun. S-Match schien sehr vielversprechend, aber ich muss in Python arbeiten, nicht in Java. Auch Latent Semantic Analysis sieht gut aus, aber ich denke, es ist mehr für Dokumenten-Klassifizierung basierend auf einem Keyword statt Keyword-Matching. Ich bin mit NLTK etwas vertraut. Könnte jemand einen Einblick geben, in welche Richtung ich gehen sollte und welche Werkzeuge ich für dasselbe verwenden sollte?
Wenn Sie ein großes Korpus haben, in dem diese Wörter vorkommen, können Sie ein Modell trainieren, das jedes Wort als Vektor darstellt. Zum Beispiel können Sie Deep Learning über die "skip-gram- und CBOW-Modelle" von word2vec verwenden, die im gensim-Softwarepaket
Im word2vec-Modell wird jedes Wort durch einen Vektor dargestellt. Sie können dann die semantische Ähnlichkeit zwischen zwei Wörtern messen, indem Sie den Kosinus der Vektoren messen, die die Wörter darstellen. Semantische ähnliche Wörter sollten eine hohe Kosinusähnlichkeit haben, zum Beispiel:
%Vor%(Der Wert ist nur zur Veranschaulichung angegeben.)
Auch aus meinen Experimenten erhält man durch Summieren einer relativ kleinen Anzahl von Wörtern (d. h. bis zu drei oder vier Wörtern) die Semantik, zum Beispiel:
%Vor%(Wiederum nur zur Veranschaulichung.)
Sie können dieses semantische Ähnlichkeitsmaß zwischen Wörtern als Maß verwenden, um Ihre Cluster zu generieren.
Wenn Latente semantische Analyse sich auf ein "Dokument" bezieht, bedeutet es im Grunde jede Menge von Wörtern, die länger als 1 ist. Sie können es verwenden, um die Ähnlichkeit zwischen einem Dokument und einem anderen Dokument, zwischen einem Wort und einem anderen Wort zu berechnen zwischen einem Wort und einem Dokument. So können Sie es sicher für Ihre gewählte Anwendung verwenden.
Andere nützliche Algorithmen sind:
Ich beginne mit einem Blick auf Wordnet. Es wird Ihnen echte Synonyme und andere Wortbeziehungen für Hunderttausende geben Begriffe. Da Sie das nltk
getaggt haben: Es stellt Bindungen für Wordnet bereit und Sie können es als Grundlage für domänenspezifische Lösungen verwenden.
Lesen Sie in der NLTK immer noch die Diskussion der Methode similar()
in der Einführung zum NLTK-Buch, und die Klasse nltk.text.ContextIndex
, auf der sie basiert. (Alles noch ziemlich einfach, aber es könnte alles sein, was du wirklich brauchst).
Tags und Links python nlp nltk latent-semantic-indexing