2013-08-26 23 views
8

Ich entwickle gerade ein Programm mit der Fähigkeit, einen kleinen Text (etwa 250 Zeichen) mit einer Sammlung ähnlicher Texte (etwa 1000-2000 Texte) zu vergleichen.NLP/Machine Learning Textvergleich

Der Zweck ist zu prüfen, ob Text A einem oder mehreren Texten in der Sammlung ähnlich ist und wenn ja, muss der Text in der Sammlung nach ID abrufbar sein. Jeder Text erhält eine eindeutige ID.

Es gibt zwei Möglichkeiten, wie ich die Ausgabe sein möchte:

Option 1: Text Ein angepaßter Text B mit 90% Ähnlichkeit, Text C mit 70% Ähnlichkeit, und so weiter.

Option 2: Text Angepasstes Text D mit der höchsten Ähnlichkeit

ich etwas Maschinelles Lernen in der Schule gelesen haben, aber ich bin mir nicht sicher, welcher Algorithmus passt dieses Problem die beste oder wenn ich in Betracht ziehen sollten NLP mit (nicht vertraut mit dem Thema).

Hat jemand einen Vorschlag, welchen Algorithmus zu verwenden oder wo finde ich die notwendige Literatur, um mein Problem zu lösen?

Danke für jeden Beitrag!

Antwort

4

Ich fand einen tollen Artikel zur semantischen Ähnlichkeitsmessung, der perfekt für mein Problem ist.

WordNet based semantic similarity measurement

Vielen Dank für den Input!

+0

Ich bin ziemlich neu in ML und hoffte, Cloud-ML-Dienste Google, Azire, Watson zu verwenden. Ich muss auch Textvergleiche lösen, was hast du implementiert? – jasan

19

Es scheint nicht ein Lernproblem Maschine zu sein, Sie suchen einfach nach etwas Textähnlichkeit Maßnahme. Sobald Sie eine ausgewählt haben, sortieren Sie Ihre Daten einfach nach den erreichten "Scores".

Je nach Texten, können Sie eine der folgenden Metriken (list from the wiki) oder definieren Sie Ihre eigene:

  • Hamming-Distanz
  • Levenshtein-Distanz und Damerau-Levenshtein Abstand
  • Needleman-Wunsch Entfernung oder Verkäufer-Algorithmus
  • Smith-Waterman Abstand
  • Gotoh Entfernung oder Smith-Waterman-Gotoh Abstand
  • Monge Elkan Abstand
  • Blockdistanz oder L1 Entfernung oder City-Blockdistanz
  • Jaro-Winkler Abstand
  • Soundex Distanzmaß
  • einfache Anpassung Koeffizient (SMC)
  • Dice-Koeffizient
  • Jaccard Ähnlichkeit oder Jaccard-Koeffizient oder Tanimoto-Koeffizient
  • Tversky-Index
  • Überlappungskoeffizient
  • euklidischen Abstand oder L2 Abstand
  • Kosinusähnlichkeit
  • Variational Abstand
  • Hellinger Entfernung oder Bhattacharyya Abstand
  • Informationen Radius (Jensen-Shannon Divergenz)
  • Skew Divergenz
  • Verwirrung Wahrscheinlichkeit
  • Tau-Metrik, eine Näherung der Kullback-Leibler-Divergenz
  • Fellegi und Sunters metrisch (SFS)
  • Maximal Spiele
  • Lee Entfernung

Einige der oben (wie zum Beispiel. Kosinusähnlichkeit) erfordern die Transformation Ihrer Daten in vektorisiertes Format. Dieser Prozess kann auch auf vielerlei Weise mit der einfachsten möglichen Anwendung von Wörtern/Tfidf-Techniken erreicht werden.

Liste selbst ist weit davon entfernt, vollständig zu sein, ist nur ein Entwurf solcher Methoden. Insbesondere gibt es viele String-Kernel, die auch zur Messung der Textähnlichkeit geeignet sind. Insbesondere kann der Wordnet Kernel die semantische Ähnlichkeit auf der Grundlage einer der vollständigsten semantischen Datenbanken der englischen Sprache messen.

+0

Können Sie mir den Link zum Wiki geben? Danke für die Eingabe – RobertH

+0

Link zum Text hinzugefügt – lejlot

+0

würde gerne den Grund für den Downvote herausfinden, kann ich bitte einen Kommentar? – lejlot