2016-09-12 39 views
8

Możliwe jest wyszukiwanie słów w jednym zdaniu za pomocą Sphinx. Na przykład mamy następny tekst:Jak poprawić wykrywanie zdań w Sfinksie?

Вася молодец, съел огурец, т.к. проголодался. Такие дела.

Gdybym szukać

молодец SENTENCE огурец 

znajdę ten tekst. Gdybym szukać

молодец SENTENCE проголодался 

nie mogę znaleźć ten tekst, ponieważ kropka z frazą т.к. uznać za koniec zdania.

A jak widzę, zestaw ograniczników jest zakodowany na stałe w Sphinx's sources.

Moje pytanie brzmi: jak poprawić wykrywanie zdania? Lepszym sposobem dla mnie jest użycie parsera Tomita Yandexa lub innej biblioteki nlp z inteligentnym wykrywaniem zdań.

+0

YEs, jej zakodowany, ale zasady wokół "." powinno być ustawione tak, że 'T.K' nie powinno być uważane za granicę sentencji, ponieważ jest to abominacja. http://sphinxsearch.com/docs/current.html#conf-index-sp - – barryhunter

+0

@barryhunter, tak, ale 'т.к' nie jest standardowym skrótem dla Sphinx? Jak określić ten skrót? Inne możliwe sytuacje: "Компании Yahoo! известна во всем мире." i inne przypadki. Myślę, że w lepszy sposób - przekazać segmentację do biblioteki zewnętrznej ... – mnv

+0

To wszystko zgodnie z zasadami, powinno być traktowane jako zniesławianie (jak ja to rozumiem), oparte na regułach, a nie na konkretnych produktach. Rozszerzanie sfinksa o bardziej rozbudowane reguły wymagałoby modyfikacji źródła. – barryhunter

Odpowiedz

1

Podziel tekst na zdania za pomocą analizatora Tomith firmy Yandex. Otrzymujemy tekst, który jest podzielony przez "\ n".

Usuń wszystkie ".", "!", "?" pozostawiając ostatnie z każdego zdania.

Zbuduj indeks Sphinx z tymi wstępnie przetworzonymi danymi.