https://github.com/mayabot/mynlp
需求:
用户输入的连续无空格拼音流,解析为一个个字的拼音。
例如:
“shujubianhuaqushidengxiangguanxinxi”
解析为
shu, ju, bian, hua, qu, shi, deng, xiang, guan, xin, xi
引入感知机通用框架
<dependency>
<groupId>com.mayabot.mynlp</groupId>
<artifactId>mynlp-perceptron</artifactId>
<version>3.0.0</version>
</dependency>
是一个通用的、高性能感知机框架。mynlp其他感知机分词、词性标注、人名识别、NER等都是基于这个框架开发的。
当然你可以基于这个框架解决其他序列标注问题,下面我们将演示如果切分拼音流。(wanzhengdepinyin => wan zheng de pin yin)
你只需告知感知机框架两件事情:
– 特征提取函数
– label编码
– 原始语料如果转换为(输入=标签)二元组
定义感知机
class PinyinSplitDefinition : PerceptronDefinition<Char, String, CharArray>() {
override val labels = listOf("B", "M", "E", "S")
override fun labelIndex(label: String): Int {
return when (label) {
"B" -> 0
"M" -> 1
"E" -> 2
"S" -> 3
else -> 0
}
}
override fun buffer() = FastStringBuilder(4)
override fun featureFunction(sentence: CharArray, size: Int, position: Int, buffer: FastStringBu