0

alle.Wie man minimale Sätze von Satzkorpus erhält, wessen Wörter die maximalen Sätze im ursprünglichen Korpus abdeckt?

Ich habe ein Problem "Optimierung" und ich weiß nicht wirklich, welchen Weg ich starten sollte. Hier ist die Beschreibung meines Problems:

Ich habe ein Korpus mit vielen Textsätzen. Jetzt muss ich ein Minimum an Sätzen aufnehmen (als Audiodateien), aber gleichzeitig die Anzahl der Sätze im Originalkorpus maximieren, die aus den aufgezeichneten Sätzen gebildet wurden - genauer gesagt von den aufgezeichneten Wörtern.

Ein sehr kurzes Beispiel dafür, was ich tun muss:

Corpus:

  • schwarzer Hund
  • graue Katze
  • großen Hund
  • graue Maus
  • groß Maus

Beispiel für Mindeststrafen das Maximum des ursprünglichen Korpus zu decken:

  • schwarzer Hund
  • große Maus
  • graue Katze

Von 3 Sätze (und ihre Worte) oben können wir die restlichen Sätze im Korpus bilden. Natürlich suche ich nach einer Berechnungsmethode, die optimal ist, weil mein Korpus Tausende von Sätzen enthält. Kennen Sie eine Methode, die für dieses Problem geeignet ist?

Vielen Dank für Ihre Antworten!

Morphid

+0

Scheint, dass Sie hier einen zusätzlichen Parameter benötigen, um anzugeben, wie viel Sie in der Lage sind, ein zusätzliches Wort in Ihrer Minimalliste zu tauschen, um mehr Wörter im Korpus abzudecken. Für z.B. warum nicht "schwarze Hundemaus"? – samgak

+1

Klingt wie das Set-Cover-Problem: https: //en.wikipedia.org/wiki/Set_cover_problem – m69

+0

Danke für deine Antworten :-) @samgak Ich muss genaue Sätze aus meinem Korpus aufzeichnen, weil ich ihr Format behalten muss (wegen des zukünftigen Experiments, um nicht "Sätze" zu generieren, um das Ganze zu erfassen) Korpus) – Morphid

Antwort

0

Wenn Ihr Korpus ist so einfach, wie Sie zeigen, und Sie nicht wirklich brauchen, Sätze zu erstellen, können Sie nur die Unigramme berechnen. Wenn es komplexer ist, führen Sie eine Form der Themenmodellierung aus. Die Themenmodellierung gibt die Wörter im gesamten Korpus zurück. Sie müssen Ihren Korpus in einer Reihe von Dokumenten haben. In Ihrem Fall könnte jedes "Dokument" ein Satz sein. Ein guter Themenmodellierungsalgorithmus wird "Latent Dirichlet Allocation" (LDA) genannt.

Für ein technisches Papier auf LDA siehe Latent Dirichlet Allocation.

Für einen Artikel mit Beispiel-Python-Code mit der Gensim-Bibliothek siehe Experiments on the English Wikipedia.

Der folgende Artikel und Beispielcode von Jordan Barber, Latent Dirichlet Allocation (LDA) with Python, verwendet NLTK, um ein Korpus und Gensim für LDA zu erstellen. Dieser Code ist anpassbarer an andere Anwendungen als der Wikipedia-Code.

+0

Vielen Dank für Ihre Antwort! Wie Sie erwähnt haben, könnten Unigramme im Falle von Daten, die ich habe, ausreichend sein, aber LDA ist für mich interessant und ich werde es mehr erforschen und versuchen, es anzuwenden. Vielen Dank. – Morphid