Suche nach ähnlichen Dokumenten

· Thomas Wood
Suche nach ähnlichen Dokumenten

Erweitern Sie Ihr Team mit NLP-Spezialisten

Entfesseln Sie das Potenzial Ihrer NLP-Projekte mit dem richtigen Talent. Veröffentlichen Sie Ihre Stelle bei uns und ziehen Sie Kandidaten an, die genauso leidenschaftlich über natürliche Sprachverarbeitung sind.

NLP-Experten einstellen

Wie NLP- Dokumentähnlichkeitsalgorithmen verwendet werden können, um ähnliche Dokumente zu finden und Dokument-Empfehlungssysteme zu erstellen.

Stellen Sie sich vor, Sie lesen ein Dokument und möchten herausfinden, welche anderen Dokumente in einer Datenbank diesem Dokument am ähnlichsten sind. Dies nennt man das Dokumentähnlichkeitsproblem oder das semantische Ähnlichkeitsproblem.

How can [NLP](/data-science-consulting/what-is-an-nlp-expert/) and [machine learning](/data-science-consulting/machine-learning-consulting-businesses-benefit/) be used to find similar documents?

Wir können uns einige Beispiele aus der Praxis vorstellen, bei denen Ihnen dies begegnen könnte:

  • Sie haben eine wissenschaftliche Arbeit (Titel, Zusammenfassung und Volltext) und möchten Veröffentlichungen finden, die dieser Arbeit am ähnlichsten sind. Vielleicht könnte Ihnen ein solches Tool dabei helfen, wissenschaftliche Forscher mit ähnlichen Interessen zu finden.
  • Sie betreiben eine öffentliche Website zur Jobsuche und müssen Stellenbeschreibungen mit ähnlichen Jobs vergleichen.
  • Sie müssen Bewerber finden, die einem bestehenden Bewerber auf Grundlage des Textes seines Lebenslaufs ähnlich sind.
  • Ein Anwalt muss frühere Rechtsfälle finden, die dem vorliegenden Fall ähneln.
  • Eine Dating-App muss ähnliche Partner empfehlen, die auf dem Profil einer Person basieren, die dem Benutzer „gefällt“.

Es gibt eine Reihe von Möglichkeiten, dieses Problem mithilfe der Verarbeitung natürlicher Sprache anzugehen.

Bevor ich mir jedoch die verfügbaren Technologien ansehe, möchte ich zunächst das Problem definieren.

Testgetriebene Entwicklung: Was erreichen Sie mit einem Dokumentähnlichkeitsmodell?

Vor dem Erstellen eines NLP- Modells zur Berechnung der Dokumentähnlichkeit muss eine Frage gestellt werden: Was soll es leisten?

In dem Unternehmen, für das Sie es erstellen, gibt es wahrscheinlich keinen Datensatz, der angibt, welche Dokumente welchen anderen ähnlich sind.

Bevor Sie mit der praktischen Arbeit im Bereich Datenwissenschaft beginnen, empfehle ich Ihnen, zumindest einige Daten (einen „Goldstandard“ oder eine „Grundwahrheit“) zu sammeln, die zum Testen und Bewerten eines zukünftigen Modells verwendet werden können. Dies ist das maschinelle Lern- Äquivalent zur testgetriebenen Entwicklung .

  • Für ein Stellenempfehlungsmodell könnten Sie einen Datensatz mit Stellenbeschreibungen erstellen und die Kandidatenüberschneidung berechnen – wie hoch war bei Stellen am gleichen geografischen Standort der Anteil der Kandidaten, die sich auf Stelle A beworben haben und sich auch auf Stelle B beworben haben?
  • Für ein Ähnlichkeitsmodell wissenschaftlicher Abstracts könnte ein analoges Maß sein, ob die Abstracts in derselben Zeitschrift veröffentlicht, auf derselben Konferenz präsentiert usw. wurden.

Wenn Sie mit der Entwicklung Ihrer Modelle beginnen, können Sie diese sofort bewerten.

Allerdings ist es oft nicht möglich, einen Datensatz zu erstellen, um ein Dokumentähnlichkeitsmodell auszuwerten. Manchmal ist die Dokumentähnlichkeit subjektiv und liegt in den Augen des Kunden. In einem solchen Fall würde ich empfehlen, ein Basismodell zu erstellen und den Stakeholdern eine Reihe von Empfehlungen vorzulegen und sie zu bitten, zu bewerten, welche Empfehlungen gut und welche weniger genau waren.

Das Ergebnis dieser Übung kann in ein Testbett umgewandelt werden, mit dem zukünftige Iterationen des Ähnlichkeitsmodells bewertet werden können.

Auswerten eines Dokumentähnlichkeitsmodells

Es gibt eine Reihe von Metriken, die zur Bewertung eines Dokumentähnlichkeitsmodells verwendet werden können. Eine der bekanntesten ist die mittlere durchschnittliche Präzision . Mit dieser Zahl kann die Qualität der Empfehlungen einer Suchmaschine gemessen werden. Modelle, die sehr relevante Dokumente an erster Stelle einstufen, werden hoch bewertet, während Modelle, die relevante Dokumente ans Ende der Liste setzen, abgestraft werden. Es gibt noch eine Reihe anderer Metriken, aber ich würde empfehlen, die Bewertung Ihrer Modelle zunächst anhand Ihres Goldstandard-Datensatzes anhand der mittleren durchschnittlichen Präzision zu beginnen.

Bag-of-Words-Ansatz zur Dokumentation der Ähnlichkeit

Die einfachste Möglichkeit, zwei Dokumente zu vergleichen, besteht darin, einfach die Wörter zu nehmen, die in beiden vorkommen, und den Grad der Überlappung zu berechnen. Die Information darüber, welches Wort mit welchem anderen Wort im Satz zusammen auftrat, können wir weglassen. Da diese Darstellung eines Satzes dem Packen einer Reihe von Wörtern in einen Beutel und dem Durcheinanderwerfen vor dem Vergleich gleichkommt, wird diese Technik als „Bag-of-Words“-Modell bezeichnet.

Nehmen wir zum Beispiel diese beiden Sätze aus den Abstracts der Artikel:

Indien ist eines der Epizentren der globalen Diabetes-mellitus-Pandemie.

Diabetes mellitus tritt häufig bei älteren Patienten auf und bleibt oft unerkannt.

Dann ist eine sehr einfache Möglichkeit, die Ähnlichkeit zu messen, Stoppwörter ( das , und , usw.) zu entfernen und dann die Anzahl der Wörter in beiden Dokumenten zu berechnen, geteilt durch die Anzahl der Wörter in einem beliebigen Dokument. Diese Zahl wird Jaccard-Index genannt und wurde vor über einem Jahrhundert vom Schweizer Botaniker Paul Jaccard entwickelt:

Paul Jaccard, developer of the Jaccard document similarity index

Paul Jaccard, Entwickler des Jaccard-Index. Quelle: Wikimedia . Lizenz: CC4.0 .

Die Nicht-Stoppwörter in Dokument 1 sind also:

{'Diabetes', 'Epizentren', 'global', 'Indien', 'mellitus', 'eine', 'Pandemie'}

und die Nicht-Stoppwörter in Dokument 2 sind:

{'häufig', 'Diabetes', 'häufig', 'mellitus', 'tritt auf', 'älter', 'Patient', 'nicht diagnostiziert'}

Natural language processing

Want to learn more?

Hat Ihnen gefallen, was Sie gerade gelesen haben? Nehmen Sie Kontakt mit uns auf, um eine NLP-Beratungssitzung zu vereinbaren.

Es gibt zwei gemeinsame Wörter ( Diabetes , mellitus ) und insgesamt 13 Wörter.

Der Jaccard-Ähnlichkeitsindex der beiden Dokumente beträgt also 2/13 = 15 %.

Illustration of the Jaccard document similarity index calculation as a Venn diagram

Darstellung der Jaccard Dokumentähnlichkeitsindexberechnung als Venn-Diagramm

Trotz ihrer Grobheit sind Bag-of-Word-Modelle wie der Jaccard-Index und die ähnliche Kosinus-Ähnlichkeit sehr leistungsstark, da sie so schnell zu implementieren und leicht zu verstehen sind.

Ich würde aus zwei Gründen empfehlen, zu Beginn eines Modellentwicklungszyklus einen Bag-of-Words-Ansatz zu verwenden: Erstens, für den Fall, dass er Ihren Anforderungen entspricht, und zweitens, um eine Ausgangsbasis zu haben und genau beurteilen zu können, ob ein ausgefeilteres Modell, das den Kontext berücksichtigt, tatsächlich einen Mehrwert bringt.

Bag-of-Words ist wahrscheinlich die beste Wahl für sehr kurze Dokumenttypen, wie Artikeltitel oder Suchanfragen, bei denen der Kontext wahrscheinlich keine Rolle spielt. Wenn Sie beispielsweise ein Jobsuchportal haben und Benutzern, die nach einem ähnlichen Begriff gesucht haben, Stellenbezeichnungen empfehlen möchten, ist ein Bag-of-Words-Ansatz wahrscheinlich das beste Modell, das Sie ausprobieren sollten.

N-Gramm-Dokumentähnlichkeit

Im obigen Beispiel haben wir Diabetes und Mellitus bei der Berechnung des Jaccard-Ähnlichkeitsindex als zwei separate Wörter gezählt. In Wirklichkeit fungieren sie als ein einziger Begriff (ein mehrwortiger Ausdruck oder MWE). Ein Bag-of-Words-Ansatz kann mehrwortige Ausdrücke nicht korrekt verarbeiten, da er sie in separate Wörter aufspaltet.

Eine Möglichkeit, dies zu umgehen, besteht darin, alle Zweiwortsequenzen zu nehmen und den Ähnlichkeitsindex anhand dieser zu berechnen. Das zweite Dokument würde also die folgenden Zweiwortteilsequenzen erzeugen:

{'und ist',
'üblicherweise in',
'Diabetes Mellitus',
„häufig nicht diagnostiziert“,
'im',
'ist häufig',
'mellitus tritt auf',
'kommt häufig vor',
'älterer Patient',
'geduldig und',
'die älteren'}

Die obigen Begriffe sind die Bigramme des Dokuments, und die Technik zum Bilden von Teilfolgen der Länge N wird als N-Gramm-Ansatz bezeichnet.

N-Gramme sind immer noch relativ einfach zu implementieren und haben den Vorteil, dass einige Kontextinformationen erhalten bleiben. Diabetes mellitus wird beispielsweise als einzelner Begriff behandelt. Ein auf N-Grammen basierendes Dokumentähnlichkeitsmodell ist nicht so „dumm“ wie der einfache Bag-of-Words-Ansatz. Normalerweise würde ich das Bigram-Modell mit dem Bag-of-Words-Modell kombinieren, um das Beste aus beiden Welten zu bekommen.

Doc2vec: Dokumente als Vektoren darstellen und die Distanz als Ähnlichkeitsmaß verwenden

catdog“cat” is closer to “dog”than it is to “jump”jumpcat = (0.2, 0.5, ..)dog = (0.1, 0.5, ..)jump = (0.9, 0.0, ...)Every word isrepresentedas a vector e.g

Die oben beschriebenen Bag-of-Word- und N-Gramm-Ansätze haben allesamt einen großen Nachteil: Wenn in Dokument 1 das Wort „Diabetiker“ und in Dokument 2 das Wort „Diabetes“ vorkommt und in Dokument 3 T2DM (eine andere Abkürzung) erwähnt wird, wie können wir dann eine Ähnlichkeit erkennen?

2013 hatte der tschechische Informatiker Tomáš Mikolov die Idee, Wörter in einem „ semantischen Raum“ darzustellen, in dem jedes Wort eine Reihe von Koordinaten im Raum hat und Wörter, die in ihrer Bedeutung nahe beieinander liegen, einen kurzen Abstand zueinander haben. Dieser Algorithmus heißt word2vec und basiert auf der Idee, dass Wörter, die in ähnlichen Kontexten vorkommen, semantisch ähnlich sind. Unten können Sie einen word2vec- Datensatz erkunden, den ich anhand einer Reihe von Dokumenten zu klinischen Studien trainiert habe.

d3.csv(‘https://raw.githubusercontent.com/fastdatascience/logos/master/data/tsne.csv', // ‘https://raw.githubusercontent.com/ plotly /datasets/master/3d-scatter.csv’,

    function(err, rows){

Funktion auspacken(Zeilen, Schlüssel) {

return rows.map(function(row)

{ return row[key]; });}

var labels = unpack(rows, 'label');

var neighbour1 = unpack(rows, 'neighbour1');

var neighbour2 = unpack(rows, 'neighbour2');

var neighbour3 = unpack(rows, 'neighbour3');

var neighbour4 = unpack(rows, 'neighbour4');

var neighbour5 = unpack(rows, 'neighbour5');

var clusters = unpack(rows, 'category');

var colourMap = ['#22577a', '#38a3a5', '#57cc99', '#80ed99', '#c7f9cc',

'#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'];

var pointColours = clusters.map(function (i) { return colourMap[i] } );

var complete_labels = labels.map(function (label, idx) {

    return label + ".<br>Nearest neighbours: " + neighbour1[idx] + ", "  + neighbour2[idx] + ", " + neighbour3[idx] + ", " + neighbour4[idx] + ", " + neighbour5[idx] + ".<br>Cluster: " + clusters[idx];

    });

var trace1 = {

x:unpack(rows, 'x1'), y: unpack(rows, 'y1'), z: unpack(rows, 'z1'), text: complete_labels,

mode: 'markers',

marker: {

           color: pointColours, // 'rgb(34, 87, 122)',

    size: 5,

    line: {

    color: '#000000',

    width: 0.5},

    opacity: 0.8},

type: 'scatter3d'

};

/* var trace2 = {

x:unpack(rows, 'x2'), y: unpack(rows, 'y2'), z: unpack(rows, 'z2'),

mode: 'markers',

marker: {

    color: 'rgb(127, 127, 127)',

    size: 12,

    symbol: 'circle',

    line: {

    color: 'rgb(204, 204, 204)',

    width: 1},

    opacity: 0.8},

type: 'scatter3d'};

*/

var Daten = [Trace1 / , Trace2 / ]; var layout = { /* Titel: {

    text: 'Estimated probabilities of [authorship](/forensic-stylometry-linguistics-authorship-analysis-demo) from [Burrows Delta](https://academic.oup.com/dsh/article/32/suppl_2/ii4/3865676) algorithm calculated using [Python](https://www.python.org) library [faststylometry](https://pypi.org/project/faststylometry)',

    font: {

        family: 'PT Sans',

        size: 20

    },

    //xref: 'paper',

    //x: 0.05,

    }, */

Marge: {

l: 0,

[r](https://www.r-project.org): 0,

b: 0,

t: 0

}

}; Plotly .newPlot(‘myDiv’, Daten, Layout);

/* // beginne mit dem Schweben var meinPlot = document.getElementById(‘meinDiv’);

myPlot.on(‘plotly_hover’, Funktion (Ereignisdaten){

var points = eventdata.points[0],

    pointNum = points.pointNumber;

console.log(pointNum);

Plotly.Fx.hover('myDiv',[

    { curveNumber:0, pointNumber:414 },

  //  { curveNumber:1, pointNumber:pointNum },

   // { curveNumber:2, pointNumber:pointNum },

]);

}); */

});

Beachten Sie, dass Wörter, die konzeptionell ähnlich sind, im Diagramm nah beieinander liegen. Oft wird die euklidische Distanz als Maß für die Ähnlichkeit verwendet.

Mikolov erweiterte word2vec später auf Dokumente und schuf damit einen Algorithmus, der jedes Dokument beispielsweise als 500-dimensionalen Vektor darstellen kann. Die Ähnlichkeit zwischen zwei Dokumenten wird durch die Nähe ihrer Vektoren angezeigt.

Transformers: der neueste Stand bei Dokumentähnlichkeit und anderen NLP-Aufgaben

Die oben genannten Methoden sollten ausreichen, um die Dokumentähnlichkeit für beide Anwendungsfälle zu messen. Wenn Sie jedoch noch ein paar zusätzliche Leistungssteigerungen erzielen möchten, sind Transformers derzeit die modernsten Modelle. Das bekannteste Transformer-basierte Modell heißt BERT , aber es gibt auch andere Modelle wie ELMO, RoBERTa, DistilBERT und XLNet.

Transformer funktionieren ebenfalls, indem sie Wörter und Sätze als Vektoren darstellen, allerdings mit dem entscheidenden Unterschied, dass die Vektordarstellung eines Wortes nicht festgelegt ist, sondern selbst vom Kontext des Wortes abhängt. Beispielsweise wird das Wort „it“ im Vektorraum unterschiedlich dargestellt, je nachdem, worauf sich „it“ bezieht – eine Funktion, die nützlich ist, wenn Transformermodelle zum Übersetzen vom Englischen in eine geschlechtsspezifische Sprache verwendet werden, wo es je nach Bezug unterschiedliche Übersetzungen geben kann.

Transformer sind sehr rechenintensiv (sie benötigen GPUs und laufen nicht auf einem normalen Laptop) und sind oft auf kurze Sätze beschränkt. In den meisten kommerziellen Anwendungsfällen sind sie aufgrund der schwierigen Implementierung möglicherweise unhandlich. Wenn Sie jedoch ein Transformer-Modell anhand Ihrer Daten trainieren können, übertrifft es wahrscheinlich die oben aufgeführten Alternativen.

Die genauen Details der Funktionsweise von Transformatoren sind sehr schwer zu durchschauen. In der Praxis können Sie für den Einstieg in die Arbeit mit Transformatoren einen Cloud-Anbieter wie Microsoft Azure ML, Google Cloud Platform oder AWS Sagemaker verwenden. Die Textklassifizierungsbeispiele auf diesen Plattformen ermöglichen es Ihnen, vorab trainierte Transformatormodelle relativ schnell für Dokumentähnlichkeitsberechnungen zu verwenden, ohne sich mit den Details der Funktionsweise von Transformatoren befassen zu müssen.

Verwendung von in der Cloud gehosteten LLMs

Heutzutage bieten die bekanntesten LLMs wie OpenAI eine API für Satzeinbettungen. Sie müssen also keinen Transformer auf Ihrem Computer ausführen. Wenn Sie einen OpenAI-API-Schlüssel haben, können Sie die API von OpenAI aus Ihrem Code aufrufen, um eine Satzeinbettung für alle Ihre Dokumente zu generieren. Sie können dann die Kosinusähnlichkeit zwischen den Einbettungen als Maß für die Ähnlichkeit berechnen.

Abschluss

Es stehen eine Reihe von Dokumentenähnlichkeitsmodellen zur Verfügung. Ich würde empfehlen, sich einem Dokumentähnlichkeitsproblem zu nähern, indem Sie die Aufgabe und einen Goldstandard definieren und eine Bewertungsmetrik auswählen. Anschließend trainieren Sie eine Reihe von Modellen von den einfacheren Optionen bis zu den komplexeren Alternativen, bis Sie das Modell gefunden haben, das am besten zum Anwendungsfall passt.

Auch die Algorithmen zur Erkennung von Dokumentähnlichkeiten entwickeln sich schnell weiter, und die transformerbasierten Methoden werden in den nächsten Jahren wahrscheinlich an Bedeutung gewinnen.

  • Harmony – ein Open-Source-Online-Softwaretool von Fast Data Science, mit dem Psychologen ähnliche Fragebogenelemente finden können. Es verwendet Satzeinbettungen mit zusätzlicher regelbasierter Vorverarbeitung.
  • Pinecone – eine Vektordatenbank, die eine schnelle und effiziente Suche nach Einbettungen ermöglicht.
  • Elasticsearch – das Standardtool, das von Unternehmen weltweit zur Informationsbeschaffung verwendet wird.

Verweise

P. Jaccard, Verbreitung der Alpenblume im Dranses-Becken und in einigen Nahregionen. Bulletin de la Société Vaudoise des Sciences Naturelles 37, 241-272 (1901)

T. Mikolov et al.. Effiziente Schätzung von Wortdarstellungen im Vektorraum , arXiv : 1301.3781 (2013)

Erweitern Sie Ihr Team mit NLP-Spezialisten

Entfesseln Sie das Potenzial Ihrer NLP-Projekte mit dem richtigen Talent. Veröffentlichen Sie Ihre Stelle bei uns und ziehen Sie Kandidaten an, die genauso leidenschaftlich über natürliche Sprachverarbeitung sind.

NLP-Experten einstellen

Generative KI
Generative ki

Generative KI

Generative KI Einführung Generative KI , ein Teilbereich der KI, verändert Branchen grundlegend und gestaltet die Zukunft. Durch die Nutzung fortschrittlicher Algorithmen kann generative KI Inhalte, Designs und Lösungen erstellen, die zuvor undenkbar waren.

Große Daten
Große daten

Große Daten

Große Daten Das Aufkommen von Big Data hat ganze Branchen revolutioniert und traditionelle Geschäftsmodelle und Entscheidungsprozesse verändert. In dieser umfassenden Untersuchung gehen wir der Frage nach, was Big Data ist, welche erheblichen Auswirkungen es auf die Geschäftsstrategie hat und wie Unternehmen riesige Datenmengen nutzen können, um Innovationen voranzutreiben und sich einen Wettbewerbsvorteil zu verschaffen.

KI im Finanzwesen
Ki im finanzwesen

KI im Finanzwesen

KI im Finanzwesen Die Integration künstlicher Intelligenz (KI) in den Finanzsektor hat die Arbeitsweise von Institutionen revolutioniert, von der Automatisierung von Abläufen bis hin zur Verbesserung der Kundenbindung und des Risikomanagements.

What we can do for you

Transform Unstructured Data into Actionable Insights

Contact us