SAP HANA Text Analyse – Wie böse ist der Wolf? Dr. Ingo Peter, SAP Österreich GmbH 26 April, 2016 Public Wie böse ist der Wolf? © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 2 Unterstützte Arten der Textanalyse Search Text analysis Text mining In addition to string matching, HANA features full-text search which works on content stored in tables or exposed via views. Just like searching on the Internet, full-text search finds terms irrespective of the sequence of characters and words. Capabilities range from basic tokenization and stemming to more complex semantic analysis in the form of entity and fact extraction. Text analysis applies within individual documents and is the foundation for both full-text search and text mining. Text mining makes semantic determinations about the overall content of documents relative to other documents. Capabilities include key term identification and document categorization. Text mining is complementary to text analysis. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 3 SAP HANA Architektur zur Textanalyse HANA UI for Information Access For search and text capabilities inside SAP HANA HANA Apps Apps on HANA Applications running natively on / against SAP HANA Database Applications on any platform using SQL via ODBC/JDBC SQL, MDX native REST, OData Extended Application Services Search (InA) Modeler, dev. workbench Search engine Analytic engine Engines Model Linguistic processing Tables Studio Metadata Store Entity & fact extraction Preprocessor SAP HANA © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 4 Laden der Dokumente nach SAP HANA Es wird eine Tabelle bereitgestellt mit Information zu Dokumenten ID, Titel, Sprache, Mime Type, … Das Dokument selber liegt im Feld content vom Typ BLOB (Binary Large Object) © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 5 Datenbeladung - Dokumente Vier Grimm‘s Märchen im MS Word Format … Weitere mögliche Formate sind plain Text, pdf,… Übersicht im View m_text_analysis_mime_types © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 6 Datenbeladung - Werkzeuge Die Beladung erfolgt in diesem Beispiel über ein Python Script: load_docFTaleStore.py Alternative Möglichkeiten bestehen: ruby, Data Services, u.a. Eventuell müssen die Textdokumente gar nicht in die HANA geladen werden, sondern es reicht, wenn das Analyseergebnis (Textanalyse Index) in die Datenbank geladen wird. Die Dokumente selber können über einen Link zugänglich gemacht werden. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 7 Datenbeladung - Werkzeuge © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 8 Datenbeladung - Ergebnis Vier Grimm‘s Märchen wurden nach SAP HANA in eine Tabelle geladen © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 9 … nochmals … das Ergebnis … © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 10 … ist die Visualisierung eines Ratings … Das Ergebnis ist die Visualisierung dieser Daten Jedem Akteur in jedem Märchen wurde ein durchschnittliches Rating vergeben, wie gut, wie böse er ist. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 11 Text analysis An option to the full-text index Text analysis is defined on a table column. It is bound to full-text indexing – pre-processing steps are shared. During pre-processing, a full-text index is created which is ‘attached’ as a shadow column to the table column indexed. This index can be accessed only indirectly: when a full-text search is performed. In contrast, the results of text analysis are stored in the table $TA_<index_name>. Results are stored in a table. Full-text indexing with text analysis Full-text index Source table Text analysis results table SAP HANA © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 12 Text analysis An option to the full-text index The following steps may be executed on unstructured text to augment full-text indexing: Part-of-Speech Noun groups Entity extraction Fact extraction © 2016 SAP SE or an SAP affiliate company. All rights reserved. word categories Tags Examples: quick: Adj; houses: Nn-Pl concepts Identifies Examples: text data; global piracy pre-defined entity types Classifies Examples: Winston Churchill: PERSON; U.K.: COUNTRY; Relates entities – e.g., classifies sentiments with topics Example: I love SAP HANA: [Sentiment] I [StrongPositiveSentiment] love [/StrongPositiveSentiment] [Topic] SAP HANA [/Topic].[/Sentiment] Public 13 Text analysis An option to the full-text index File format filtering Language detection Tokenization Stemming Part-of-Speech Full-text indexing with text analysis Full-text index Source table Noun groups Entity extraction Text analysis results table Fact extraction SAP HANA © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 14 Topic 4 of 11 | Text analysis: Understanding output and configurations Extraction analysis output Primary key(s) from source table are used to link annotations back to original source row Type of text analysis output (“Entity Extraction”) Uniquely identifies each text analysis annotation within a given source (and text analysis output type) Word, punctuation, or sequence of words and punctuation from the input text (“surface form” of the annotation) © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 15 Topic 4 of 11 | Text analysis: Understanding output and configurations Extraction analysis output Language of input text (mixed-language texts are not supported) Semantic type of entity/relationship Standard form for dictionary extractions; otherwise NULL Not used for extraction output; always NULL © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 16 Topic 4 of 11 | Text analysis: Understanding output and configurations Extraction analysis output Relative paragraph (number) containing the annotation Relative sentence (number) containing the annotation Offset in characters from beginning of input text Indicates a semantic relationship between this annotation and another annotation from the same source text. Contains the TA_COUNTER value of the parent word or phrase. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 17 Der Textanalyse Index für unser Beispiel Für die Tabelle tabFairyTaleStore mit den vier Grimm‘s Märchen wird ein Textanalyse Index erstellt. Der Textanalyse Index ist eine Tabelle $TA_FT_FairyTaleStore Beispiel „Liebe Kinder“ = sentiment Sentiment ist die Klammer über das topic („Kinder“) und die Bewertung (hier StrongPositiveSentiment, „liebe“) Die Klammer wird technisch durch den ta_counter und ta_parent beschrieben: ta_parent verweist auf den ta_counter von sentiment. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 18 Ermittlung des Ratings aus den Standardsentiments Die Standardbewertungen WPS, WNS, SPS, SNS, NES, … werden auf ein Rating abgebildet, und es wird bei mehrmaligem Auftreten derselben Entität ein Durchschnitt gebildet. Auf den TA Index wird mit SQL zugegriffen © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 19 Textanalyse Modell für unser Beispiel Ob ein Akteur gut … böse ist, wird durch seine Eigenschaften beschrieben bzw. dadurch, was er tut: <sentiment>arme Kinder</sentiment> <topic>Kinder</topic> <WeakPositiveSentiment>arme</WeakPositiveSentiment> *) <sentiment>liebe Mutter</sentiment> <topic>Mutter</topic> <StrongPositiveSentiment>liebe</StrongPositiveSentiment> <sentiment>der Fuchs stiehlt</sentiment> <topic>Fuchs</topic> <StrongNegativeSentiment>stiehlt</StrongNegativeSentiment> *) Anpassung des Dictionaries: arm = gut für Märchen !!! © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 20 Text Analyse: Entitäten- und Faktenextraktion Text Analysis strukturiert unstrukturierten Text auf zwei Arten: Entitäten: John Lennon was one of the Beatles. John Lennon</PERSON> was one of the <ORGANIZATION@ENTERTAINMENT>Beatles</ORGANIZATION@ENTERTAINMENT>. <PERSON> Fakten: I love your product. I <STRONGPOSITIVESENTIMENT>love</STRONGPOSITIVESENTIMENT> <TOPIC>your product</TOPIC>. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 21 Text Analyse: Was wird bei der Entitätenextraktion unterstützt? Who: People, job title, and national identification numbers What: Companies, organizations, financial indexes, and products When: Dates, days, holidays, months, years, times, and time periods Where: Addresses, cities, states, countries, facilities, internet addresses, and phone numbers How much: Currencies and units of measure Generic concepts: text data, global piracy, and so on Languages: Arabic, English, Dutch, Farsi, French, German, Italian, Japanese, Korean, Portuguese, Russian, Simplified Chinese, Spanish, Traditional Chinese © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 22 Text Analyse: Faktenextraktion Voice of customer Sentiments: Requests: Emoticons: Profanity: strong positive, weak positive, neutral, weak negative, strong negative, and problems general and contact info strong positive, weak positive, weak negative, strong negative ambiguous and unambiguous Languages: English, Dutch*, French, German, Italian, Portuguese, Russian, Simplified Chinese, Spanish, Traditional Chinese *Emoticons and profanity only © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 23 Text Analyse: Faktenextraktion Enterprise Public Sector Membership information Action & travel events Management changes Military units Product releases Person-alias, -appearance, -attributes, -relationships Mergers & acquisitions Spatial references Organizational information Domain-specific entities Language: English © 2016 SAP SE or an SAP affiliate company. All rights reserved. Language: English Public 24 Anlegen eines Textanalyse Index Siehe auch die Standardkonfigurationen: LINGANALYSIS_FULL, EXTRACTION_CORE, VOICEOFCUSTOMER © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 25 Der Textanalyse Index als Eigenschaft der Basistabelle © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 26 Textanalyse Index – Tabellenstruktur © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 27 Steuerung des Textanalyse Index durch eine Konfiguration © 2016 SAP SE or an SAP affiliate company. All rights reserved. Die Konfiguration wird als xml-Datei im HANA Repository abgelegt. Eine Konfiguration muss aktiviert werden Public 28 Konfigurationdatei hdbtextconfig In der Konfigurationsdatei (*.hdbtextconfig) wird dann auf © 2016 SAP SE or an SAP affiliate company. All rights reserved. Dictionaries (*.hdbtextdict) und Regeldateien (*.hdbtextrule) verwiesen Public 29 Konfiguration - Dictionaries Dictionaries können und müssen an die Anforderungen angepasst werden PERSON ist eine Standardentität Für Märchen wird diese Standardentität erweitert durch typische Märchenakteure (Entitäten): Hexe, Bauer, Zauberer, Königin, Stiefmutter, Wolf, … Entitäten können Varianten besitzen: Der Wolf heißt auch Isegrimm, Nimmersatt, Bösewicht, … Für spezielle Anwendungen (z.B. Medizin: ICD Codes) können Dictionaries z.B. auch von Partnern ausgeliefert werden. Dictionaries sind xml-Dateien, die im HANA Repository aktiviert werden müssen. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 30 Konfiguration – Dictionaries – Ergebnis im TA Index Im Textanalyse Index stehen dann unter ta_token die Varianten, unter ta_normalized die Entitäten (siehe hier im Beispiel für die Entität PERSON). © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 31 Konfiguration – Dictionaries für Sentiments Auch Sentiments werden in Dictionaries definiert Ein Standarddictionary für Sentiments wird auch mit SAP HANA ausgeliefert. Anpassung der Dictionaries an spezielle Anforderungen: z.B. können Begriffe wie schwach und krank in Märchen durchaus positiv besetzt sein. Best Practice: Standard Dictionary kopieren und anpassen © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 32 Standardbewertungen für Sentiments Entity category names generally follow the pattern “Output Value” + “@” + “part-of-speech”. Examples: WPS@Noun, WPS@Verb, WNS@Noun Possible output values MAP MIP WPS SPS WNS SNS NES + (MajorProblem) (MinorProblem) (WeakPositiveSentiment) (StrongPositiveSentiment) (WeakNegativeSentiment) (StrongNegativeSentiment) (NeutralSentiment) @ @ @ @ @ @ @ @ + Possible parts-of-speech Adj Noun Verb Adv In addition to the above acronyms for the dictionary entity categories, some modules use a few more. See the SAP HANA Text Analysis Extraction Customization Guide for details. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 33 HANA Standard Dictionaries Die HANA Standard Dictionaries findet man im Repository unter sap hana ta Für HANA SPS10 muss gegebenenfalls die Delivery Unit HANA_TA_VOC.tgz installiert werden Das Standard Dictionary für deutsche Sentiments ist germantf-voc-thesaurus.hdbdict Best Practice beim Anpassen: Kopieren und die Kopie anpassen. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 34 Fakten Extraktion: Regeln / CGUL Bei der Faktenextraktion geht es um die Sinnextraktion bei Texten OD definiert eine eigene Entität TE definiert eine Standardentität In diesem Beispiel werden folgende Fakten extrahiert „liebe Kinder“ Kinder sind positiv belegt, weil lieb = positiv „der Fuchs stiehlt“ Fuchs ist negativ belegt, weil stehlen = negativ „der Wolf mit gierigem Blick“ Wolf ist negativ belegt, weil gierig = negativ Regeldateien werden in der Konfigurationsdatei (*.hdbtextconfig) hinterlegt und müssen aktiviert werden. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 35 Von der Faktenextraktion zur Bewertung: TA Index Die Struktur der Regeldatei liefert auch automatisch die Klammerung: Sentiment klammert topic und die Bewertung (z.B. StrongPositiveSentiment) Regeldatei *.hdbtextrule #group Sentiment { [OD StrongPositiveSentiment][TE SPS]<POS: Adj>?[/TE][/OD] %(Figure) #subgroup Figure: [OD Topic][TE PERSON] <>? [/TE][/OD] © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 36 Von der Faktenextraktion zur Bewertung: Rating © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 37 Von der Faktenextraktion zur Bewertung © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 38 Topic 8 of 11 | Text analysis: Customizing fact extraction through rules Was ist CGUL? CGUL = Custom Grouper User Language • CGUL allows you to customize extraction functionality by providing the tools required to define your own custom extraction rules • CGUL uses regular expressions and pre-defined linguistic attributes for the entities, relations, or events you need extracted • CGUL functionality is the last processing stage in the text analysis pipeline. It occurs after linguistic analysis and entity extraction have taken place. • CGUL is a token-based pattern matching language © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 39 CGUL Beispiel Iteration operators: +, *, ?, {m}, {n,m} Examples 1. #group PROPERNOUNS: <[A-Z][a-z]+> 2. #subgroup Animals: <POS: Adj>* <STEM:animal> 3. #subgroup GADAFY: <(G|Q)adh?d?h?a+f(y|iy?)> 4. <(ab){2}> versus <(ab)>{2} 5. #define ISSN_Number: [0-9]{4}\-[0-9]{4} 6. #group NounPhrase: <POS: Det>?<POS: Adj>{0,3}<POS: Nn|Prop>+ © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 40 Text Analyse - Ausblick Results are stored in a table and therefore can be leveraged in all supported HANA scenarios: Standard analytics Create analytic views and calculation views on top E.g., companies mentioned in news articles over time Search-based applications Create a search model and build a search UI with Info Access Results can be used to navigate and filter search results E.g., people finder, search UI for internal document Data mining, predictive Use R, Predictive Analysis Library (PAL) functions, Graph, text mining, … E.g., clustering, time series analysis, Latent Dirichlet Algorithm, etc. © 2016 SAP SE or an SAP affiliate company. All rights reserved. Public 41 Danke Kontakt: Dr. Ingo Peter Solution Architect Data Science SAP Österreich GmbH 0043 664 6207 391