Чанкинг для тамильского языка
Я хочу использовать блок NLTK для тамильского языка (который является индийским языком). Тем не менее, он говорит, что не поддерживает Unicode, потому что он использует модуль 'pre' для регулярных выражений.
Нерешенные проблемы
Если мы используем
re
Модуль для регулярных выражений, механизм регулярных выражений Python генерирует ошибки "максимальная глубина рекурсии превышена" при обработке очень больших текстов, даже для регулярных выражений, которые не должны требовать никакой рекурсии. Поэтому мы используемpre
модуль вместо Но учтите, чтоpre
не включает поддержку Unicode, поэтому этот модуль не будет работать со строками Unicode.
Любое предложение обойти или другой способ сделать это?
2 ответа
Чанкеры зависят от языка, поэтому вам все равно нужно тренировать их на тамильском. Конечно, если вы довольны доступными готовыми решениями (я понятия не имею, есть ли они, например, если ссылка в удаленном ответе хороша), вы можете перестать читать здесь. Если нет, вы можете тренировать свой собственный, но вам понадобится корпус, который помечен фрагментами, которые вы хотите распознать: возможно, вы ищете фрагменты NP (обычный случай), но, возможно, это что-то другое.
Получив аннотированный корпус, внимательно посмотрите на главы 6 и 7 книги NLTK и особенно раздел 7.3, Разработка и оценка чанкеров., Хотя глава 7 начинается с блока регулярных выражений nltk, продолжайте чтение, и вы увидите, как создать "классификатор последовательностей", который не зависит от механизма разбиения на блоки на основе регулярных выражений nltk. ( Глава 6 необходима для этого, так что не пропустите это).
Это не тривиальная задача: вам нужно понять подход классификатора, собрать воедино части, возможно, преобразовать ваш корпус в формат IOB и, наконец, выбрать функции, которые обеспечат вам удовлетворительную производительность. Но это довольно просто, и может быть выполнено для любой задачи языка или чанкинга, для которой у вас есть аннотированный корпус. Единственная открытая часть - это продумывание контекстных подсказок, которые вы можете преобразовать в функции, чтобы помочь классификатору принять правильное решение, и экспериментирование, пока вы не найдете хорошее сочетание. (С другой стороны, это гораздо более мощный подход, чем решения на основе регулярных выражений, даже для текста ascii).
Вы можете использовать LTR Shallow Parser для тамильского языка.
Вы можете проверить онлайн демо, здесь.