Mittwoch , Mai 6 2020

Best Practices für die Verarbeitung natürlicher Sprache in Python und R l Sisense

Blog

Wie der Titel schon sagt, werden wir in diesem Artikel Best Practices in der Verarbeitung natürlicher Sprache (NLP) untersuchen. Dazu verwenden wir Algorithmen für maschinelles Lernen (ML), die auf Konzepten der linearen Algebra und Statistik basieren. Diese Best Practices helfen uns bei der Beantwortung einer häufig gestellten Frage: „Wie stellen wir Text für maschinelle Lernsysteme dar?“

 packages-CTA-banners_Cloud-Data-Teams "class =" wp-image-92288 lazyload "data-srcset = "https://cdn.sisense.com/wp-content/uploads/packages-CTA-banners_Cloud-Data-Teams.jpg 770w, https://cdn.sisense.com/wp-content/uploads/packages-CTA- banners_Cloud-Data-Teams-370x120.jpg 370w, https://cdn.sisense.com/wp-content/uploads/packages-CTA-banners_Cloud-Data-Teams-768x249.jpg 768w, https: //cdn.sisense. com / wp-content / uploads / packages-CTA-banners_Cloud-Data-Teams-178x58.jpg 178w, https://cdn.sisense.com/wp-content/uploads/packages-CTA-banners_Cloud-Data-Teams-616x200 .jpg 616w, https://cdn.sisense.com/wp-content/uploads/packages-CTA-banners_Cloud-Data-Teams-356x116.jpg 356w "Größen =" (maximale Breite: 770px) 100vw, 770px "/ > </figure>
<p> Das Verständnis der wahren Bedeutung von Wörtern durch Analyse des Kontextes des umgebenden Textes wird als <strong> semantische Analyse </strong> bezeichnet Das erste, was Sie für die semantische Analyse eines NLP-Projekts tun müssen, ist die Textvorverarbeitung. <a title=Dies ist eine wichtige Praxis in NLP und macht Daten für die Algorithmen verständlicher. Um die Textvorverarbeitung zu verstehen, verwenden wir als Beispiel eine allgemeine Aufgabe zur Verarbeitung natürlicher Sprache, Stimmungsanalyse .

Die Stimmungsanalyse hat viele Anwendungen, und wir tun dies als Menschen, ohne wirklich nachzudenken. Zum Beispiel: Wenn Kunden Produktbewertungen schreiben, kann ein menschlicher Leser leicht erkennen, ob eine bestimmte Bewertung positiv oder negativ ist. Für Computer ist dieser Prozess viel komplizierter, daher sind Vorverarbeitungsschritte unerlässlich, um saubere Daten zu erhalten.

Nehmen Sie eine Beispielbewertung für ein Produkt von https://www.fakereviewsite.com:

https: // www.fakereviewsite.com Kann keinen Zucker machen. Habe Dutzende von SF-Sirupen ausprobiert. Keiner von ihnen kann die Vorzüglichkeit dieses Produkts berühren.

Dick, köstlich. Perfekt. 3 Zutaten: Wasser, Maltit, natürliches Ahornaroma. ZEITRAUM. Keine Chemikalien. Kein Müll.

Unglaublich lecker …

Kannst du sagen, dass es mir gefällt? 🙂

Die Vorverarbeitung funktioniert folgendermaßen:

1. Entfernen Sie zunächst die URLs und HTML-Tags

. URLs wie https://www.fakereviewsite.com im obigen Beispiel und HTML-Tags wie

fügen der Überprüfung keinen Wert hinzu Text. Stellen Sie sich dies als "Rauschentfernung" für ein aufgenommenes Audio-Stück vor.

Beispielcode:


 text_review = re sub (r "http  S +", "", text_review)
text = BeautifulSoup (text_review, 'lxml'). get_text () 

Ausgabe:

Kann keinen Zucker machen. Habe Dutzende von SF-Sirupen ausprobiert. Keiner von ihnen kann die Vorzüglichkeit dieses Produkts berühren. Dick, lecker. Perfekt. 3 Zutaten: Wasser, Maltit, natürliches Ahornaroma. ZEITRAUM. Keine Chemikalien. Kein Müll. Unglaublich lecker … Kannst du sagen, dass es mir gefällt? 1945

2. Erweitern Sie die Kontraktionen (Textstandardisierung)

Kontraktionen, die verkürzten / kombinierten Formen häufig verwendeter Wörter, sind für den Menschen normalerweise leichter zu verstehen. Wir denken oft, dass sie Text und Sprache „natürlicher“ klingen lassen. Bei Maschinen können sie jedoch durch die Verwendung der vollständigen Wörter die Stimmungsanalyse einfacher durchführen. Aus diesem Grund besteht der nächste Schritt darin, diese Kontraktionen zu vollständigen Wörtern zu erweitern (z. B. wird "kann nicht" zu "kann nicht"). Dies wird auch als "Textstandardisierung" bezeichnet.

Beispielcode:

 text = re (r "Kann nicht", "kann nicht", Text) 

Ausgabe:

kann keinen Zucker machen. Habe Dutzende von SF-Sirupen ausprobiert. Keiner von ihnen kann die Vorzüglichkeit dieses Produkts berühren. Dick, lecker. Perfekt. 3 Zutaten: Wasser, Maltit, natürliches Ahornaroma. ZEITRAUM. Keine Chemikalien. Kein Müll. Unglaublich lecker … Kannst du sagen, dass es mir gefällt? 1965

3. Entfernen Sie numerische und alphanumerische Wörter.

Entfernen Sie Zahlen und alle Wörter, die Zahlen enthalten, da Zahlen in der Stimmungsanalyse keinen Wert hinzufügen.

Beispielcode:

 text = re.sub (" S *  d  S * "," ", Text) .strip () 

Ausgabe:

kann keinen Zucker produzieren. Habe Dutzende von SF-Sirupen ausprobiert. Keiner von ihnen kann die Vorzüglichkeit dieses Produkts berühren. Dick, lecker. Perfekt. Zutaten: Wasser, Maltit, natürliches Ahornaroma. ZEITRAUM. Keine Chemikalien. Kein Müll. Unglaublich lecker … Kannst du sagen, dass es mir gefällt? 1965

4. Interpunktion und Sonderzeichen entfernen

Entfernen Sie alle Interpunktion und Zeichen: Nummernzeichen (#), Kommas, Punkte, Klammern usw. Die Textanalyse, die wir durchführen werden, leitet keinen Wert von diesen Zeichen ab. [19659002] Beispielcode:

text = re ('[^A-Za-z0-9]  +', '', text)

Ausgabe:

kann keinen Zucker machen Habe Dutzende von SF-Sirupen NONE ausprobiert von ihnen können die Vorzüglichkeit dieses Produkts berühren Dick dick köstlich Perfekte Zutaten Wasser Maltitol Natürlicher Ahorn Geschmack ZEITRAUM Keine Chemikalien Kein Müll Unglaublich lecker Kannst du sagen, dass es mir gefällt

5. Konvertieren Sie den Text in Kleinbuchstaben

Als Nächstes setzen wir die Vorverarbeitung des Textes fort, indem wir alles in Kleinbuchstaben konvertieren. Dies liegt daran, dass das ML-System Wörter mit unterschiedlichen Fällen als unterschiedliche Wörter interpretiert. Zum Beispiel werden "lecker" und "lecker", die im selben Text vorkommen, als zwei verschiedene Wörter gezählt, im Gegensatz zu zwei Instanzen desselben Wortes!

6. Stoppwörter entfernen

„Stoppwörter“ kommen in jeder Sprache vor und enthalten gebräuchliche Wörter wie „wir“, „sie“, „können“, „nicht“ usw. Diese Stoppwörter bieten in NLP keinen Mehrwert Analyse, also entfernen wir sie. Die Liste der englischen Stoppwörter des Natural Language Toolkit (NLTK) finden Sie hier.

Seien Sie jedoch vorsichtig mit Stoppwörtern wie "Nein" und "Nicht", da diese Wörter die Bedeutung eines Satzes ändern. Zum Beispiel führen "lecker" und "nicht lecker" zu zwei unterschiedlichen Gefühlen.

Daher entfernen wir diese spezifischen Stoppwörter im Allgemeinen nicht.

Beispielcode für Text in Kleinbuchstaben und entfernen Stoppwörter: [19659016] text = '' .join (e.lower () für e in text.split (), wenn e.lower () nicht in Stoppwörtern)

Ausgabe:

kein Zucker versucht Scores sf Sirupe keine Touch Excellence Produkt dick köstlich perfekte Zutaten Wasser Maltit natürlichen Ahorn Geschmack Zeitraum keine Chemikalien kein Müll unglaublich lecker erzählen wie

7. Lemmatisierung

Lemmatisierung bedeutet, das Wort in seine sinnvolle Grundform umzuwandeln. Zum Beispiel wird aus "versucht" "versuchen", "weinen", "weinen", "Autos", "Auto" usw. Wörter wie "versucht", "versucht" und "versuchen" werden also alle sein wird vom System als mehrere Instanzen desselben Wortes betrachtet: "try". Die Lemmatisierung kann auch als Teil der Normalisierung betrachtet werden.

Beispielcode:





lemmatizer = WordNetLemmatizer ()
tokenization = nltk.word_tokenize (text)
output = '' .join ([lemmatizer.lemmatize(w,pos="v") for w in tokenization] )

Output:

kein Zucker versuchen Punktzahl sf Sirup keine Berührung Exzellenz Produkt dick köstlich perfekte Zutaten Wasser Maltit natürliche Ahorn Geschmacksperiode keine Chemikalie kein Müll unglaublich lecker erzählen wie

Das macht es für die Textvorverarbeitung. Kommen wir zur nächsten bewährten Methode für NLP: Daten-Tokenisierung.

 SQL, Python und R

Daten-Tokenisierung

Die Tokenisierung ist eine der häufigsten bewährten Methoden beim Arbeiten mit Textdaten. Tokenisierung bedeutet, den Text in Sätze oder die Sätze in Wörter aufzuteilen. Diese geteilten Einheiten werden als Token bezeichnet.

Beispielsweise würde der Ausdruck "Best Practices in der Verarbeitung natürlicher Sprache" wie folgt gekennzeichnet: "Best Practices", "Practice", "In", "Natural", "Language" und " Verarbeitung. ”

In NLP ist die Tokenisierung wichtig, da die Essenz eines Textes leicht durch Analyse der darin enthaltenen Token interpretiert werden kann.

Beispielcode:

 Tokenisierung = nltk.word_tokenize (Ausgabe) 

Ausgabe:

[‘not’, ‘sugar’, ‘try’, ‘score’, ‘sf’, ‘syrups’, ‘none’, ‘touch’, ‘excellence’, ‘product’, ‘thick’, ‘delicious’, ‘perfect’, ‘ingredients’, ‘water’, ‘maltitol’, ‘natural’, ‘maple’, ‘flavor’, ‘period’, ‘no’, ‘chemicals’, ‘no’, ‘garbage’, ‘unbelievably’, ‘delicious’, ‘tell’, ‘like’]

Worteinbettung

Die Worteinbettung ist eine technische Technik in NLP, bei der Wörter oder Token auf Vektoren reeller Zahlen abgebildet werden. Bei der Worteinbettung wird jedes Wort in Vektoren mit bestimmten Dimensionen konvertiert, z. B. "d".

Dieser Prozess beinhaltet eine gelernte Darstellung für Text, bei der Wörter oder Token mit derselben Bedeutung eine ähnliche Darstellung haben und durch maschinelles Lernen leicht verstanden werden können Algorithmen.

Das Einbetten von Wörtern extrahiert die Bedeutung von Textdaten, da es sich auch um semantische Beziehungen zwischen Geschlecht, Zeitform und Hauptstädten der Länder kümmert.

Es stehen verschiedene Modelle zum Einbetten von Wörtern zur Verfügung, z. B. word2vec von Google, Glove von Stanford und fastText von Facebook.

Als Beispiel verwenden wir die Worteinbettung von Glove mit 300 Dimensionen für das Wort „lecker“. [19659002] Beispielcode:

Embeddings_index [“delicious”]

Ausgabe:

Array ([
-0.27801, -0.14519, 0.49453, 0.12529, -0.057677
0,70151, 0,28826, -0,20441, 0,03009, 1,3899,
-0,26564, 0,43441, -0,47501, -0,13348, 0,24737,
-0,45528, -0,67027, 1,1701, 0,040979, -0,12553 – [194590] 0,075785, -0,27344, -0,049158, -0,42694, -0,041506,
-0,11606, 0,3838, -0,1245, 0,018793, -0,78534,
0,055234, 0,007924, 0,055043, -0,20598, -0,06414,
-0,06305, -0,027444, -0,26364, 0,64279,
-0,29369, 0,11132, 0,28754, -0,27219, 0,48337,
0,93093, -0,23844, 0,61936, 0,12593, -0,24751,
-0,08677, 0,19172, -0,36446, -0,071028, 0,64807,
0,12867 -0,12793, 0,19642,
0,68146, -0,55865, -0,27874, 0,039101, -0,17919,
-0,59897, 0,20486, 0,15241, 0,34993, 0,47898,
0,36544, 0,57892, 0,24779, -0,35
-0,22896, -0,22391, 0,16569, -0,61168, -0,18378,
-0,023205, -0,18056, 0,054312, -0,1776, -0,098411,
-0,6113, 0,38856, 0,88379, -0,29058, -0,29058
0,015754, 0,23812, 0,10429, 0,41016, 0,23708,
1,0123, -0,86614, -0,16838, 0,066406, -0,0050272,
-0,22711, -0,28863, 0,36877, -0,25895, -0,290103 , 0. 58853, 0,21332, 0,55837, -0,23193,
-0,21208, -0,56664, -0,66216, 0,22095, 0,12373,
-0,48547, -0,44839, 0,0091947, -0,27908, 0,014443,
0,21652 -0,4034, 0,27554,
-0,52523, 0,436, -0,60157, 0,18374, 0,11548,
-0,17291, -0,89038, 0,38101, 0,32373, -0,25688,
0,19965, -0,11587, 0,025411 -0,31512,
-2,5693, 0,35069, 0,57936, 0,24183, -0,025946,
-1,205, -0,061434, 0,057562, 0,55008, -0,016724,
0,32504, 0,11345, 0,40961, 0,16263, 0,19 -0,017293, -0,12313, -0,1714, 0,80623, -0,039624,
-0,39989, 0,52971, 0,42122, 0,077219, -0,005385,
-0,63461, 0,25213, -0,377005, 0,20136, -0,052806 [1945-012338022055-0195-066998
-0,18867, 0,022199, -0,82456, -0,080926, -0,41921,
0,034355, -0,69545, 0,24931, -0,10916, 0,12605,
-0,75361, -0,03306 -0,0046053, -0,31902,
-0,31114, -0,036903, -0,022895, -0,13569, -0,27607,
-0,1031, 0,30701, 0,34186, 0,45891, -0,13587,
-0,45223, -0,90 0,099395, -0,074891, 0,19245,
0,29045, -0,39008, 0,73567, 0,62942, -0,2174,
-0,51588, -0,19546, 0,081308, -0,030894, -0,34068,
0,28449, 0,405 0,093235,
-0,53475, 0,34995, 0,1656, 0,80673, 0,48231,
-0,39488, -0,20581, 0,063178, 0,065316, 0,17051,
-0,16726, -0,28956, -0,50795, -0,38996
-0,16445, -0,4318, -0,47626, -0,20233, 0,1 1089,
0.13755, 0.026714, -0.93893, -0.20077, 0.20623,
0.7216, -0.58006, -0.38965, -0.2282, 0.17188,
-0.3815, 0.04917, -0.32791, 0.10739, 0.023031 [1945] 0,67157, 0,32911, 0,28143, 0,036222, 0,1453,
-0,12512, -0,27149, 0,04054, -0,020042, -0,056311,
0,34275, -0,62091, -0,0058532, -0,49363, 0,072698,
-0,026662, -0,23517, -0,34235, -0,54425,
0,45515, 0,085665, 0,070533, 0,36966, 0,95099,
0,47395, -0,1195, 0,12501, -0,50397, 0,10813,
0,53519 0,17101, 0,48838,
0,46119, 0,4737, -0,14692, 0,0055303, -0,37672,
-0,090149, 0,52314, -0,97767, 0,18443, 0,25023] dtype = float32)

Die Vektoren für tok Worteinbettung wird für den Nex verwendet t ML-Schritt (nicht in dieser Übung), Modellierung. In der Modellierung lernen wir ein Programm, um mithilfe von ML-Algorithmen aus Trainingsdaten zu lernen.

Richtige Vorbereitung, genaue Ausführung

Jetzt haben wir einen richtig vorbereiteten Textdatensatz: Unnötige Füllwörter wurden entfernt, der gesamte Text ist in Kleinbuchstaben und In seiner einfachsten Form wurden Wörtern Werte zugewiesen, mit denen unsere ML-Algorithmen arbeiten können. Diese Best Practices helfen Ihnen dabei, Ihre Textanalyse optimal zu nutzen und Gefühle aus menschlichen Wörtern herauszuholen, ohne sie einzeln lesen zu müssen. Und das ist erst der Anfang dessen, was ML für Sie tun kann. Viel Spaß beim Codieren!

 packages-CTA-banners_Cloud-Data-Teams "class =" wp-image-92288 lazyload "data-srcset =" https://cdn.sisense.com/wp-content/uploads/packages-CTA -banners_Cloud-Data-Teams.jpg 770w, https://cdn.sisense.com/wp-content/uploads/packages-CTA-banners_Cloud-Data-Teams-370x120.jpg 370w, https://cdn.sisense.com https://mlmasuv1f1hf.i.optimole.com/nEzPv0M-4TIWWFn3/w:auto/h:auto/q:auto/https://businessintelligenceonline.club/wp-content/uploads/packages-CTA-banners_Cloud-Data-Teams-768x249.jpg 768w, https://cdn.sisense.com/wp-content/uploads/packages-CTA-banners_Cloud-Data-Teams-178x58. jpg 178w, https://cdn.sisense.com/wp-content/uploads/packages-CTA-banners_Cloud-Data-Teams-616x200.jpg 616w, https://cdn.sisense.com/wp-content/uploads/ packages-CTA-banners_Cloud-Data-Teams-356x116.jpg 356w "Größen =" (maximale Breite: 770px) 100vw, 770px "/> </figure>
<p><em><strong> Nidhi Bansal </strong> ist Datenwissenschaftler, Enthusiast für maschinelles Lernen / künstliche Intelligenz. und Schriftstellerin, die gerne mit Daten experimentiert und darüber schreibt. Sie verfügt über mehr als ein Jahrzehnt Erfahrung in der Softwareentwicklung in verschiedenen Programmiersprachen und hat einen B.Tech und M.E in Elektronik und Nachrichtentechnik. </em></p>
</div>
<style> ins.adsbygoogle { background: transparent !important; } </style>
<div style=

About BusinessIntelligence

Check Also

Auswählen von Self-Service-BI-Tools mithilfe von Analystenberichten

Viele Unternehmen verwenden Self-Service-BI-Tools, um ihre Wettbewerbsfähigkeit zu verbessern. Im Laufe der Zeit sind mehrere …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.