Text analysis

Werbung
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
Herunterladen