Я пытаюсь проанализировать содержимое базы данных Drupal для целей коллективного интеллекта.
До сих пор мне удавалось разработать простой пример, который токенизирует различное содержимое (в основном сообщения форума) и подсчитывает токены после удаления стоп-слов.
StandardTokenizer
, поставляемый с Lucene, должен иметь возможность токенизировать имена хостов и электронные письма, но контент также может иметь встроенный html, например:
Pubblichiamo la presentazione di IBM riguardante DB2 per i vari sistemi operativi
Linux, UNIX e Windows.\r\n\r\nQuesto documento sta sulla piattaforma KM e lo potete
scaricare a questo <a href=\'https://sfkm.griffon.local/sites/BSF%20KM/BSF/CC%20T/Specifiche/Eventi2008/IBM%20DB2%20for%20Linux,%20UNIX%20e%20Windows.pdf\' target=blank>link</a>.
Это плохо маркируется следующим образом:
pubblichiamo -> 1
presentazione -> 1
ibm -> 1
riguardante -> 1
db2 -> 1
vari -> 1
sistemi -> 1
operativi -> 1
linux -> 1
unix -> 1
windows -> 1
documento -> 1
piattaforma -> 1
km -> 1
potete -> 1
scaricare -> 1
href -> 1
https -> 1
sfkm.griffon.local -> 1
sites -> 1
bsf -> 1
20km/bsf -> 1
cc -> 1
20t/specifiche/eventi2008/ibm -> 1
20db2 -> 1
20for -> 1
20linux -> 1
20unix -> 1
20e -> 1
20windows.pdf -> 1
target -> 1
blank -> 1
link -> 1
То, что я хотел бы иметь, это объединять ссылки и удалять html-теги (например, <pre>
или <strong>
), которые бесполезны.
Должен ли я написать фильтр или другой токенизатор? Токенизатор должен заменить стандартный или я могу их смешать? Сложнее всего было бы взять StandardTokenizerImpl
и скопировать его в новый файл, затем добавить пользовательское поведение, но я бы не хотел сейчас слишком углубляться в реализацию Lucene (постепенно изучая).
Возможно, уже реализовано нечто подобное, но я не смог его найти.
EDIT:
Глядя на StandardTokenizerImpl
, я думаю, что если мне придется расширить его, изменив фактическую реализацию, это не так удобно по сравнению с использованием lex или flex и выполнением этого самостоятельно ... 1028 *