Textmining mit Apache Spark

Wortbild zu IT-Know-How

Man spricht hierbei auch vom Scale-Out. Apache Spark hat in den letzten Jahren erheblich an Bedeutung gewonnen und gehört heutzutage zum Standard-Repertoire jedes Datenanalysten. Am Beispiel der Suche nach ähnlichen Patenten haben Prof. Dr. Markus Breunig aus der Fakultät für Informatik (HS Rosenheim) und Stephan Schiffner (Steadforce1) dargestellt, wie man Apache Spark2 für die Textanalyse einsetzen kann.

Verwendet wurden die von der US-Patentbehörde kostenfrei zur Verfügung gestellten Patentdaten der letzten Jahre, die als XML-Files zum Download3 bereitliegen.
Bevor man jedoch mit der eigentlichen Datenanalyse beginnt, ist es wichtig die Architektur und die unterschiedlichen Datenstrukturen zu verstehen, die Apache Spark zur Verfügung stellt.

Im ersten Schritt müssen die Patent-XML-Dateien eingelesen und für die Verarbeitung aufbereitet werden. Spark stellt dafür umfangreiche Bibliotheken bereit, so dass dies mit wenigen Zeilen Code erledigt werden kann.
Für den zweiten Schritt, das Finden ähnlicher Patente zu einem vorgegebenen Patent, muss man sich überlegen, wann sich zwei Textdokumente (wie eben diese Patente) überhaupt ähnlich sind – glücklicherweise wurde dazu in den Fachgebieten „Information Retrieval“ und „Text-Mining“ schon viele Jahre intensiv geforscht, und sehr gut funktionierende Maße für die Ähnlichkeit (wie TF-IDF) definiert. Nun geht es daran, diese in Spark auf den Patenten umzusetzen. Auch dies ist auf Grund der machine-learning-Bibliothek MLlib4, die Teil von Spark ist, mit relativ wenig Aufwand zu erledigen.
Wer nun neugierig auf die Details, viele Code-Beispiele und das schlussendliche Ergebnis ist, ist herzlich eingeladen den Artikel5 der beiden Autoren im Fachmagazin „Informatik aktuell“ zu lesen.

 

Linkverweise:
[1] steadforce.com
[2] spark.apache.org
[3] www.uspto.gov/learning-and-resources/bulk-data-products
[4] spark.apache.org/mllib/
[5] www.informatik-aktuell.de/entwicklung/methoden/einfuehrung-in-spark-ein-text-mining-projekt.html