Text-Mining: Finden Sie ein bestimmtes Wort und erhalten Sie dann die Wörter auf beiden Seiten davon<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich versuche, Text in manuell eingegebenen Kommentaren abzubauen. Zum Glück gibt es ein gewisses Muster. Wenn innerhalb der ersten 10 Wörter das Wort „to“ vorkommt, sind die Wörter auf beiden Seiten von „to“ die Wörter, die ich haben möchte.
Ich habe den ersten Schritt unternommen, eine Ausdrucksspalte mit der Formel zu erstellen: Wörter[Kommentare]. Es hat eine Liste der Wörter aus der Kommentarspalte zurückgegeben - ziemlich cool.
Also, was mache ich als nächstes, um herauszufinden, ob „to“ in den ersten zehn Wörtern vorkommt, und wenn ja, greife ich die Wörter auf beiden Seiten von „to“?
Betreff: Text Mining: Finden Sie ein bestimmtes Wort und erhalten Sie dann die Wörter auf beiden Seiten davonDank an alle! Entschuldigung für die späte Antwort - war damit beschäftigt, das Text-Mining für ein Jahrestreffen zu machen, das gerade zu Ende gegangen ist.
Also habe ich Jeffs Formelansatz verwendet, weil ich nicht viel Zeit hatte, etwas wirklich Elegantes zu tun. Jetzt habe ich Zeit, Regex zu lernen. Ich werde eine Skriptlösung für diese Analyse entwickeln, damit ich sie nächstes Jahr schnell durchführen kann.
Die Datenbereinigung / Extraktion von Informationen war der chaotische Teil dieser Arbeit. Die Formel hat mir geholfen, das zu finden, wonach ich gesucht habe. Aber ich musste noch viel in Columns > arbeiten Umcodieren. Hut ab vor denen, die es in JMP12 so mächtig gemacht haben!
Übrigens, Text Mining wäre ein hervorragendes Mastering JMP Webinar .
Betreff: Text Mining: Finden Sie ein bestimmtes Wort und erhalten Sie dann die Wörter auf beiden Seiten davonWenn ich es einmal gesagt habe, habe ich es eine Million Mal gesagt.Wenn Sie Text Mining betreiben möchten, lohnt es sich, eine Stunde damit zu verbringen, reguläre Ausdrücke zu lernen.Tonnenweise großartige YouTube-Videos und es gibt sogar einen sehr guten Abschnitt darüber im Scripting Guide.
Text = "Beispieltext zur Frage." ;
Antwort 1 = regulärer Ausdruck ( Text , "(\w+) zu (\w+)" , "\1" ) ;
Antwort2 = regulärer Ausdruck ( Text , "(\w+) zu (\w+)" , "\2" ) ;
Antworten = regulärer Ausdruck ( Text , "(\w+) zu (\w+)" , "\1" || ", " || "\2" ) ;
drucken ( Antwort 1 ) ;
drucken ( Antwort2 ) ;
drucken ( Antworten ) ;
Ausgang:
"Text"
"das"
"Text, der"
Betreff: Text Mining: Finden Sie ein bestimmtes Wort und erhalten Sie dann die Wörter auf beiden Seiten davonIan@JMP hat ein nettes gescriptetes Beispiel.
Wenn Sie es in einer Spaltenformel tun möchten, sieht es so aus.

Diese Formel verwendet a Lokale Variable um die Position des "to" zu halten.
Ich habe eine Datentabelle mit einer Spalte mit dieser Formel angehängt, um zu zeigen, wie es funktioniert.
NB: Wenn "to" an Position 10 erscheint, erhalten Sie die Wörter 9 und 11. Wenn Sie das nicht möchten, müssen Sie eine zusätzliche Bedingung in If() einfügen.
Betreff: Text Mining: Finden Sie ein bestimmtes Wort und erhalten Sie dann die Wörter auf beiden Seiten davonOhne zu ausgefallen zu werden, vielleicht so etwas? Das zweite ergibt '{}', weil das letzte 'Wort' 'to' ist. nicht 'zu'. Aber Sie könnten das bei Bedarf umcodieren.
NamesDefaultToHere ( 1 ) ;
wordsThatBracketTo =
Funktion ({ Str } , { Standardlokal } ,
strWörter = Wörter ( Str ) ;
zuPos = Lok ( strWörter , "zu" ) ;
erforderlicheWörter = {} ;
wenn ( zuPos <= 10 ,
wenn ( zuPos > 1 , Einfügen in ( erforderlicheWörter , strWörter [ zuPos - 1 ])) ;
wenn ( zuPos < NIArtikel ( strWörter ) , Einfügen in ( erforderlicheWörter , strWörter [ zuPos + 1 ])) ;
) ;
Bewertungsliste ( erforderlicheWörter ) ;
) ;
Beispieltext = "Hier ist ein Satz, der nicht zu oft vorkommt." ;
Drucken ( wordsThatBracketTo ( Beispieltext )) ;
Beispieltext = „Hier ist ein Satz, der to enthält.“ ;
Drucken ( wordsThatBracketTo ( Beispieltext )) ;