Ich suche nach Input und Theorie, wie man sich einem lexikalischen Thema nähert.
Angenommen, ich habe eine Sammlung von Zeichenfolgen, die nur ein Satz oder möglicherweise mehrere Sätze sein können. Ich möchte diese Zeichenfolgen analysieren und die wichtigsten Wörter herausreißen, vielleicht mit einer Punktzahl, die angibt, wie wahrscheinlich es ist, dass das Wort wichtig ist.
Schauen wir uns einige Beispiele an, was ich meine.
Beispiel 1:
"Ich will wirklich einen Keurig, aber ich kann mir keinen leisten!"
Dies ist ein sehr einfaches Beispiel, nur ein Satz. Als Mensch kann ich leicht erkennen, dass "Keurig" hier das wichtigste Wort ist. Auch "leisten" ist relativ wichtig, obwohl es eindeutig nicht der Hauptpunkt des Satzes ist. Das Wort "Ich" kommt zweimal vor, ist aber überhaupt nicht wichtig, da es uns keine wirklichen Informationen gibt. Ich könnte erwarten, einen Hash von Wörtern / Partituren wie diesen zu sehen:
"Keurig" => 0.9
"afford" => 0.4
"want" => 0.2
"really" => 0.1
etc...
Beispiel 2:
"Hatte gerade eine der besten Schwimmübungen meines Lebens. Hoffentlich kann ich meine Zeiten im Wettbewerb halten. Wenn ich nur daran gedacht hätte, meine nicht wasserdichte Uhr abzunehmen."
Dieses Beispiel enthält mehrere Sätze, sodass durchgehend wichtigere Wörter vorhanden sind. Ohne die Punktübung aus Beispiel 1 zu wiederholen, würde ich wahrscheinlich erwarten, dass zwei oder drei wirklich wichtige Wörter daraus hervorgehen: "Schwimmen" (oder "Schwimmpraxis"), "Wettkampf" und "Beobachten" (oder "wasserdicht") Uhr "oder" nicht wasserdichte Uhr ", je nachdem, wie mit dem Bindestrich umgegangen wird).
Wie würden Sie bei ein paar Beispielen wie diesem vorgehen, um etwas Ähnliches zu tun? Gibt es bereits vorhandene (Open Source) Bibliotheken oder Algorithmen in der Programmierung, die dies tun?
Antworten:
Es gibt definitiv Leute, die über das von Ihnen beschriebene Problem nachdenken. Das Ranking und die Extraktion relevanter Einzelwörter im Text (pdf) von João Ventura und Joaquim Ferreira da Silva sind eine schöne Einführung in bestehende Ranking-Techniken sowie Verbesserungsvorschläge. Alle Techniken, die sie beschreiben, basieren auf einem Korpus (viel Text) gegenüber einer oder zwei Textzeilen. Ihr Korpus müsste die Sammlung aller Proben oder möglicherweise vieler Korpora gesammelter Proben aus bestimmten Quellen sein. Denken Sie daran, dass die Relevanz einzelner Wörter (Unigramm) ein ungelöstes Problem ist. Wie das Papier beschreibt:
Es gibt viele Open-Source- Toolkits für die Verarbeitung natürlicher Sprache . (Seien Sie vorsichtig. Einige Tools sind für die Forschung kostenlos, erfordern jedoch eine kommerzielle Lizenz für die kommerzielle Nutzung.) Sie erleichtern Ihnen das Leben, unabhängig davon, welchen Ansatz Sie wählen.
Ich bin mit dem Natural Language Toolkit (NLTK) am besten vertraut . Es ist einfach zu bedienen, gut dokumentiert und wird im Buch Natural Language Processing with Python (online frei verfügbar) vorgestellt. Stellen Sie sich als einfaches Beispiel dafür vor, was NLTK für Sie tun könnte, und verwenden Sie den Teil-der-Sprache-Tagger . Wenn der Wortbestand jedes Wortes identifiziert ist, können Sie Eigennamen als sehr wichtig und Adjektive als weniger wichtig betrachten. Verben könnten wichtig sein und Adverbien weniger. Es ist keineswegs ein hochmodernes Ranking, aber Sie erhalten nützliche Informationen mit geringem Aufwand. Wenn Sie bereit sind, sich einer komplexeren Analyse zuzuwenden, können Sie sich dank der integrierten Fähigkeit von NLTK zum Tokenisieren, Markieren, Aufteilen und Klassifizieren auf die anderen Details Ihrer Lösung konzentrieren.
quelle
Die Verarbeitung natürlicher Sprache ist eine eigene Disziplin, an der eine Menge formaler Forschung betrieben wird. Ich würde damit beginnen, dort zu suchen.
Ich würde auch meine Bedürfnisse überdenken. Selbst nach mehr als 50 Jahren Forschung konnte Siri nur die besten Informatiker finden. Ich würde nicht erwarten, dass ein Computer das, worüber Sie sprechen, regelmäßig erfolgreich macht.
Wenn die Sprache bestimmte Einschränkungen aufweist (wie Siri, wenn Sie einen einfachen Befehl oder eine einfache Frage haben), kann dies besser sein. Das Überdenken meiner Bedürfnisse (vorausgesetzt, ich brauche NLP) würde das Definieren meiner Einschränkungen beinhalten. Danach würde ich wahrscheinlich nach einer Menge Beispielen suchen. Zum Teil, um alles zu testen, was ich mir ausgedacht habe, aber viele moderne Lösungen beinhalten maschinelles Lernen. Ich würde diese Beispiele als Eingabe für die Lernkurve benötigen.
Zusammenfassend bezweifle ich ernsthaft, dass irgendetwas Ihnen in einem solchen kontextfreien Szenario gute Ergebnisse bringen kann.
quelle