Frage

Das Problem ist wie folgt:

Ich habe eine Zusammenfassung, in der Regel zwischen 20 bis 50 Worten, dass ich zu einem anderen relativ ähnlichen Zusammenfassungen vergleichen möge. Die allgemeine Kategorie und die geographische Lage, auf die die Zusammenfassung bezieht sich auf bereits bekannt ist.

Zum Beispiel, wenn Menschen aus der gleichen Gegend schreiben über den Bau eines Hauses, würde Ich mag Lage sein, diese Zusammenfassungen mit einem gewissen Maß an Sicherheit aufzulisten, dass sie tatsächlich beziehen sich Häuser bauen, anstatt den Bau einer Garage oder ein Hinterhof Schwimmbad.

Der Datensatz liegt derzeit bei rund 50 000 Dokumenten mit einer Wachstumsrate von rund 200 Dokumenten pro Tag.

Bevorzugte Sprachen wäre Python, PHP, C / C ++, Haskell oder Erlang, je nachdem, was die Arbeit erledigt bekommen könnte. Auch, wenn Sie nichts dagegen haben, möchte ich die Argumentation zu verstehen, eine bestimmte Sprache für die Kommissionierung.

War es hilfreich?

Lösung

Sie können einen Blick auf die WEBSOM Projekt .

Auch wenn ihre Webseite wird nicht genau in diesem Jahr aktualisiert worden ist, ist das Problem nicht gelöst ist sehr ähnlich. Als sie vor Datenmengen ähnlich wie bei Ihnen (und mehr) wie 10 Jahre Verarbeitung, heute werden Sie wahrscheinlich die Algorithmen fast auf einem Handy laufen konnte.

Andere Tipps

Sie können versuchen, einige String-Ähnlichkeitsmaße zu verwenden, wie Jaccard und Dice, aber anstatt die Berechnung Zeichen überlappt, berechnen Sie Wort überlappt. Zum Beispiel Python verwenden, können Sie die folgenden Befehle verwenden:

def word_overlap(a, b):
    return [x for x in a if x in b]


def jaccard(a, b, overlap_fn=word_overlap):
    """
    Jaccard coefficient (/\ represents intersection), given by :
        Jaccard(A, B) = (A /\ B) / (|a|) + (|b|) - (A /\ B)
    """
    c = overlap_fn(a, b)
    return float(len(c)) / (len(a) + len(b) - len(c))

jaccard("Selling a beautiful house in California".split(), "Buying a beautiful crip in California".split())

Da gibt es eine native Unterstützung für schöne Sätze in Python ist, können wir eine href ändern <= "https://stackoverflow.com/questions/671398/determining-if-two-or-more-summaries-are-similar / 1149292 # 1149292" > JGs Code wie,

def jaccard(a, b):
    """
    Jaccard coefficient (/\ represents intersection), given by :
        Jaccard(A, B) = (A /\ B) / (|a|) + (|b|) - (A /\ B)
    """
    c = a.intersection(b)
    return float(len(c)) / (len(a) + len(b) - len(c))

jaccard(set("Selling a beautiful house in California"), set("Buying a beautiful crip in California"))

Es ist nicht wirklich eine bestimmte Sprache zu wählen. Sie versuchen, semantische Ähnlichkeit zu finden. Dies ist ein sehr großes Gebiet. Sie könnten in diesem Papier interessiert sein:

Corpus-basierte und wissensbasierte Maßnahmen von Text Semantic Ähnlichkeit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top