5

Mam dużo tekstów (miliony), od 100 do 4000 słów. Teksty są sformatowane jako praca pisemna, z interpunkcją i gramatyką. Wszystko jest po angielsku.Efektywnie wyodrębnij encje WikiData z tekstu

Problem jest prosty: Jak wyodrębnić każdą encję WikiData z podanego tekstu?

Jednostka jest zdefiniowana jako każdy rzeczownik, właściwy lub zwykły. Tj nazwisk ludzi, organizacji, miejsc i rzeczy, jak krześle, ziemniaki itp

Do tej pory próbowałem następujące:

  1. tokenize tekst z OpenNLP i wykorzystanie pre-trained models wyodrębnić ludzi, lokalizacji, organizacja i regularne rzeczowniki .
  2. Zastosuj Porter Stemming, jeśli dotyczy.
  3. Dopasuj wszystkie wyodrębnione rzeczowniki za pomocą wmflabs-API, aby pobrać potencjalny identyfikator WikiData.

Ten działa, ale czuję, że mogę zrobić to lepiej. Jedną z oczywistych poprawek byłoby buforowanie odpowiednich fragmentów WikiData lokalnie, co planuję zrobić. Zanim jednak to zrobię, chcę sprawdzić, czy istnieją inne rozwiązania.

Sugestie?

Zaznaczyłem pytanie Scala, ponieważ używam zadania Spark.

Odpowiedz

2

Niektóre propozycje:

  • rozważyć Stanford NER w porównaniu do OpenNLP zobaczyć jak to porównuje na swoim korpusie
  • Zastanawiam się na wartości wynikające dla większości nazwy podmiotu
  • Podejrzewam, że może tracić informacje dzieląc zadanie na dyskretne etapy.
  • chociaż Wikidata jest nowa, to nie jest zadanie, więc możesz spojrzeć na dokumenty dla Freebase | DBpedia | uznanie encji Wikipedii | disambiguation

W szczególności DBpedia Spotlight to jeden system zaprojektowany dokładnie do tego zadania.

http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/38389.pdf http://ceur-ws.org/Vol-1057/Nebhi_LD4IE2013.pdf

+0

Zahamowanie jest faktycznie dokonana jedynie na rzeczowników zidentyfikowanych jako nie-właściwe i mnogiej, która nie jest większość. Dzięki za gazety/wskazując na uwagę dbpedii. Nie wiedziałem o tym. – habitats

+1

DBpedia jest faktycznie połączony z Wikidata (z jakiegoś powodu przegapiłem to), więc zaznaczę twoją odpowiedź jako zaakceptowaną, ponieważ mogłem użyć reflektora DBpedia, aby pobrać identyfikator DBMLID i użyć Sparql + RDF do pobrania identyfikatora Wikidata bezpośrednio. – habitats