Я реализовал систему NER с использованием алгоритма CRF с моими функциями ручной работы, которые дали довольно хорошие результаты. Дело в том, что я использовал множество различных функций, включая POS-теги и леммы.
Теперь я хочу сделать один и тот же NER для другого языка. Проблема в том, что я не могу использовать POS-теги и леммы. Я начал читать статьи о глубоком и неконтролируемом обучении.
Мой вопрос:
Можно ли использовать методы для изучения неконтролируемых функций с помощью алгоритма CRF? Кто-нибудь пробовал это и получил хороший результат? Есть ли какая-либо статья или учебник по этому вопросу?
Я до сих пор не совсем понимаю этот способ создания функций, поэтому я не хочу тратить много времени на то, что не будет работать. Так что любая информация будет очень полезна. Создать целую систему NER, основанную на глубоком обучении, пока немного.
источник
В этой статье 2014 года ( GitHub ) авторы сравнили несколько стратегий включения встраивания слов в систему NER на основе CRF, включая плотное встраивание, бинеризованное вложение, кластерное вложение и новый метод- прототип . Непосредственное использование плотных векторов, как предлагает владимир, является наиболее простым способом, но также наименее эффективным при множественных оценках.
Я реализовал идею прототипа в своем доменном проекте NER, и он работает для меня довольно хорошо.
источник
Я опоздал всего на 5 месяцев, но с CRFSuite вы можете использовать эти функции как числа, а не как строки. Для этого вам просто нужно придумать уникальную метку для каждого измерения, а затем добавить «:» с последующим значением.
Например, слово «джунгли» представлено в 5 измерениях: 0,1 0,4 0,8 0,2 0,9
Тогда CRFSuite воспримет это слово + как:
ЭТИКЕТКА f1: 0,1 f2: 0,4 f3: 0,8 f4: 0,2 f5: 0,9
где, конечно, вы заменяете «LABEL» фактической строкой и разделяете все пробелы табуляцией (это формат для CRFSuite).
Не уверен, хотя для других пакетов.
источник