Как использовать целевой ярлык как функцию в CRF++?
Я пытаюсь построить китайский сегментатор слов, как эта статья. Если я правильно понимаю, они используют подход сегментации с 2 тегами с CRF++. Мой вопрос, как сделать переход тега в этой статье (например, T(-1)C(0)T(0)) в качестве шаблона элемента в CRF++? Например, для таких данных обучения:
共 B
同 М
創 B
造 М
美 B <- Текущее слово
好 М
的 B
新 B
世 B
紀 М
Возможно ли иметь функцию T(-1)C(0)T(0) -> M/美/B в CRF++? Я пытался добавить функцию tempalte, такую как U01:%x[-1,1]/%x[0,0]/%x[0,1], но это не удалось. Меня также смущает, что, поскольку тег B/I является тегом, который мы хотим пометить в данных тестирования (например, необработанные предложения на китайском языке), почему можно использовать этот тег в качестве функции в статье? Или я что-то не так понял?
1 ответ
Такие особенности, как T(-1)C(0)T(0) -> M/美/B в CRF++, могут быть представлены как:
В01:% х [0,0]
Обратите внимание на разницу. B, а не U
если вы используете U01:%x[0,0], это означает, что такая функция, как "美/B".
Это также немного смутило меня, когда я впервые использовал CRF++ 6 лет назад. Надеюсь, это поможет вам.
Следует отметить, что в CRF описание функции будет включать метку. Я имею в виду следующее: 0-1:текущий символ "美", а текущий ярлык "B"
Что делает "шаблон" в CRF++(который представляет собой инструмент, реализованный в CRF), так это перечисляет все метки с учетом контекста, определенного в шаблоне.
Итак, в вашем примере U01:%x[0,0] вводит 2 функции автоматически: "U01:美_y=B" и "U01:美_y=M"