Suche nach den längsten Wortketten in Russisch mit der Wolfram-Sprache (Mathematica)


    Download - Übersetzung in Form von Mathematica - Dokument , das den gesamten Code in diesem Artikel verwendet wird, enthält kann hier (Datei ~ 5 MB).

    Einleitung


    Im Russischen gibt es, wie in vielen anderen Sprachen, Wörter, die die gleiche Länge haben, sich aber nur in einem Buchstaben unterscheiden. Diese Art von Wortpaaren nennt man Metagramme .

    Nehmen wir an, wir haben mehrere aufeinanderfolgende Metagramme, sagen wir:

    Meinungsbildung, Schwelen, Reibung, Debatte, Trinken, Schwärmen, Wachsamkeit, Mahnwachen -

    sie bilden eine Kette von Metagrammen oder eine Kette von Wörtern.

    Daher rief das Spiel der Kette von Wörtern ( Wortleiter ), die im Jahre 1879 mit zurück kam , Lewis Carroll .

    Es ist klar, dass weit von jedem Anfangswort eine solche Kette gebildet werden kann, und einige Wörter sollten anscheinend ziemlich lange Ketten erzeugen.

    In diesem Beitrag werden wir versuchen, die Wortketten zu analysieren, die in der russischen Sprache aufgebaut werden können, und auch die Ketten mit der größten Länge zu finden.

    Importieren Sie eine Liste russischer Wörter


    Um Wortketten aufzubauen und zu analysieren, benötigen wir eine Liste von Wörtern, die wir auf Russisch treffen können. In diesem Beitrag beschränken wir uns nicht auf den Teil der Sprache, der verwendet werden kann, sondern betrachten nur die Form des Wortes, die dem Nominativ im Wortparadigma entspricht . Wir verwenden, wie in einem der vorhergehenden Beiträge ( Finden der besten Reihenfolge zum Anzeigen der Liste der 250 besten Filme mit der Wolfram-Sprache (Mathematica) ), ein morphologisches Wörterbuch der russischen Sprache, das vom Akademiemitglied Andrei Anatolyevich Zaliznyak erstellt wurde :

    In [1]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_2.gif

    In [3] Wir

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_3.png

    verarbeiten die Daten des Wörterbuchs und stellen auf der Grundlage einer Liste von Wörtern in russischer Sprache russianWords :

    In [4]: ​​=

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_4.png

    Die Funktion, die das Glied in der Wortkette definiert


    Lassen Sie uns eine chainLinkQ- Funktion erstellen , die bestimmt, ob zwei Wörter ein Glied in einer Wortkette sein können. Mit anderen Worten, diese Funktion beantwortet die Frage: Sind zwei Wörter ein Metagramm?

    In diesem Fall betrachten wir zwei Möglichkeiten:

    • Wörter werden durch einen Buchstaben unterschieden (in diesem Fall ist es ausreichend, die EditDistance- Funktion zu verwenden, um zu überprüfen , welche die Levenshtein-Distanz berechnet, deren Berechnungsergebnis gleich 1 sein sollte):

    In [5]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_5.png

    • Wörter werden durch n benachbarte Buchstaben unterschieden:

    In [6]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_6.png

    Suchfunktion für alle Metagramme von Wörtern fester Länge


    Jetzt finden wir alle Glieder in der Wortkette (Metagramme).

    Zunächst werden wir alle Wörter der russischen Sprache in Äquivalenzklassen unterteilen , d. H. Wir werden einen Faktorsatz von Wörtern der russischen Sprache durch ihre Länge konstruieren , mit anderen Worten, wir werden die Liste aller Wörter in Sätze von Wörtern vom 1., 2., 3, 4 usw. Buchstaben.

    In [7]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_7.png

    Finden Sie die minimale und maximale Wortlänge in Russisch:

    In [8]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_8.png

    Out [8] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_9.png

    Sehen wir uns die Verteilung der Wörter der russischen Sprache in der Länge an:

    In [9]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_10.png

    Out [9] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_11.png

    Erstellen Sie nun eine Funktion Beibehaltung der berechneten Werte, mit denen unter allen möglichen Wortpaaren einer bestimmten Länge diejenigen ausgewählt werden, die in Wortketten verknüpft werden können:

    In [10]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_12.png

    Wir berechnen diese Funktion für jede Äquivalenzklasse von Wörtern in der russischen Sprache, während wir nur Wörter betrachten, die sich durch einen Buchstaben unterscheiden:

    In [11]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_13.png

    Beispiel des Ergebnisses von Berechnungen:

    In [12]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_14.png

    Out [12] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_15.png

    Wordline-Diagramme


    Nachdem wir die Suchfunktion für alle Verknüpfungen der Wortketten für jede Äquivalenzklasse berechnet haben, können wir Diagramme erstellen, die es uns ermöglichen, die Struktur der Wortketten jedes Typs visuell zu untersuchen.

    Wenn Sie mit der Maus über die einzelnen Scheitelpunkte des Diagramms fahren, erhalten Sie einen Tooltip mit dem Wort, das dem angegebenen Scheitelpunkt des Diagramms entspricht.

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_16.png

    In [13]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_17.png

    In [14]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_18.png

    Anzahl der russischsprachigen Wortketten mit 1 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_19.png

    Anzahl der russischsprachigen Wortketten mit 2 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_20.png

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_21.png

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_22.png

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_23.png

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_24.png

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_25.png

    Anzahl der Ketten russischer Wörter mit 8 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_26.png

    Anzahl der russischsprachigen Wortketten mit 9 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_27.png

    Anzahl der russischsprachigen Wortketten mit 10 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_28.png

    Anzahl der Ketten russischer Wörter mit 11 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_29.png

    Anzahl der Ketten russischer Wörter mit 12 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_30.png

    Anzahl der russischsprachigen Wortketten mit 13 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_31.png

    Anzahl der Ketten russischer Wörter mit 14 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_32.png

    Anzahl der russischsprachigen Wortketten mit 15 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_33.png

    Anzahl der Ketten russischer Wörter mit 16 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_34.png

    Anzahl der russischsprachigen Wortketten mit 17 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_35.png

    Anzahl der Wörter mit 18 Buchstaben in russischer Sprache
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_36.png

    Anzahl der russischsprachigen Wortketten mit 21 Buchstaben
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_37.png

    Die obigen Grafiken zeigen, wie stark ihre Struktur von der Länge der Wörter abhängt, aus denen sie aufgebaut sind, während zu beobachten ist, dass die meisten Grafiken mehr als eine verbundene Komponente haben.

    Aus der folgenden Grafik können Sie die Abhängigkeit der Anzahl der verbundenen Komponenten unterschiedlicher Länge von allen oben diskutierten Grafiken ablesen. Daraus folgt, dass die Abhängigkeit von der Form sein sollte Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_38.png, in der x die Größe der verbundenen Komponente und y die Anzahl der verbundenen Komponenten ist.

    In [15]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_39.gif

    Out [16] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_40.png

    Valid:

    In [17]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_41.gif

    Out [17] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_42.png

    In [19]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_43.png

    Out [19] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_44.png

    Donald Knuths Annahme in Bezug auf russische Wortketten


    Donald Knuth war einer der Ersten, die einen Computer verwendeten, um englische Sprachketten zu lernen. Er studierte eine Wortkette, die aus 5 Buchstaben bestand, weil er der Meinung war, dass Wörter aus einer geringeren Anzahl von Buchstaben, z. B. 3, zu leicht zu lernen sind (obwohl Lewis Carroll eine Kette von 6 Gliedern vom Wort APE zum Wort MAN zusammensetzte) und die Wörter aus mehr Buchstaben können nicht zu langen Ketten führen, auch weil der entsprechende Graph viele zusammenhängende Komponenten hat.

    Lassen Sie uns Knuths Annahme für russische Sprachketten überprüfen.

    Die folgende Grafik zeigt, wie sich mit zunehmender Anzahl der Buchstaben in den Wörtern, aus denen die Ketten aufgebaut sind, die Position des Punkts mit den Koordinaten ändert:

    {die Anzahl der verbundenen Komponenten der Grafik, die Anzahl der Kanten der Grafik} .

    Die linke obere Ecke entspricht dem „idealen Graphen“ mit einer verbundenen Komponente, während es die maximale Anzahl von Kanten gibt. Der Graph, der dem nächstgelegenen Punkt der Trajektorie entspricht, der zu einem gegebenen Punkt betrachtet wird, kann offensichtlich als der "beste" angesehen werden. Der entsprechende Punkt, der automatisch gefunden wird, ist mit zwei roten Kreisen markiert und entspricht dem Diagramm der Ketten von Wörtern mit fünf Buchstaben.

    Somit kann argumentiert werden, dass die Annahme von Donald Knuth, die für die englischen Wortketten gemacht wurde, ebenso wie es nicht überraschend ist, für die russische Sprache zutrifft. Vielleicht ist dies eine ziemlich tief verwurzelte Eigenschaft der menschlichen Psychologie, die an die Zahlen 5 und 10 gebunden ist und den Fingern auf einer bzw. zwei Handflächen entspricht.

    In [20]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_45.gif

    Out [25] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_46.png

    Suchen Sie nach der längsten Wortkette in Russisch


    Nachdem wir einen ziemlich langen Weg zurückgelegt haben, sind wir endlich bereit, die längste Wortkette zu finden, die es auf Russisch gibt. Wie aus dem vorherigen Abschnitt hervorgeht, sollte es sich um eine Wortkette aus fünf Buchstaben handeln.

    In [26]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_47.png

    Out [26] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_48.png

    Wir haben also die zwei längsten Wortketten in der russischen Sprache, und wie erwartet sind sie in der „besten“ Spalte von Ketten von Wörtern mit fünf Buchstaben enthalten.

    Suchen Sie nach den längsten Ketten von n-Buchstaben-Wörtern der russischen Sprache


    Im vorherigen Abschnitt haben wir nach der längsten Wortkette in der russischen Sprache gesucht und zwei Ketten von 40 Wörtern mit fünf Buchstaben gefunden.

    Schauen wir uns nun die längstmöglichen Ketten von Wörtern mit n Buchstaben an:

    In [27]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_49.png

    Ketten russischer Wörter mit 2 Buchstaben und mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_50.png

    Ketten russischer Wörter mit 3 Buchstaben und mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_51.png

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_52.png

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_53.png

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_54.png

    Ketten russischer Wörter mit 7 Buchstaben, mit mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_55.png

    Ketten russischer Wörter mit 8 Buchstaben und mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_56.png

    Ketten russischer Wörter mit 9 Buchstaben, mit mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_57.png

    10-stellige russische Sprachketten mit mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_58.png

    11-buchstabige russische Sprachketten mit mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_59.png

    Ketten russischer Wörter mit 12 Buchstaben und mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_60.png

    Ketten russischer Wörter mit 13 Buchstaben, mit mindestens 5 Wörtern
    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_61.png

    Fazit


    Ich hoffe, dass mein Beitrag Sie interessiert hat und einige der darin vorgestellten Ideen und Programme für Sie nützlich sein werden. Natürlich können Sie sich viele interessante Studien der russischen Sprache einfallen lassen. Sagen wir , zu Beginn des Posts wurde die chainLinkQ- Funktion erstellt , deren Funktionalität eine ähnliche Untersuchung für Metagramme ermöglicht, die sich in zwei Buchstaben unterscheiden - was tatsächlich einer kleinen Änderung der Spielregeln in Wortketten entspricht. Aus den beiden unten dargestellten Diagrammen geht klar hervor, dass das Diagramm von Metagrammen mit vier Buchstaben, die sich in zwei Buchstaben unterscheiden, verbunden ist, verglichen mit dem Diagramm von Metagrammen, die sich nur in einem Buchstaben unterscheiden. Dies lässt darauf schließen, dass die Ergebnisse der Untersuchung solcher Graphen und Ketten völlig anders ausfallen werden.

    In [28]: =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_62.png

    Out [28] =

    Poisk-samyh-dlinnyh-cepochek-slow-v-russkom-jazyke-s-pomoshhju-jazyka-Wolfram-Language-Mathematica_63.png

    Ressourcen zum Erlernen der Wolfram-Sprache ( Mathematica ) auf Russisch: http://habrahabr.ru/post/244451

    Jetzt auch beliebt: