我想标记文本,而不是仅用空格分隔。

有些东西,例如专有名称,我只想设置一个令牌(例如:“ Renato DinhaniConceição”)。另一种情况:百分比(“ 60%”)而不是分成两个标记。

我想知道是否有某种图书馆提供的Tokenizator可以提供高度定制化?如果没有,我将尝试编写自己的脚本,如果有一些接口或实践可遵循。

并非所有事物都需要得到普遍认可。例子:我不需要重新定义中文字母。

我的申请是大学申请,并且主要针对葡萄牙语。只有某些东西(例如名称,地点和类似名称)会来自其他语言。

最佳答案

我将尝试从标记化的角度而不是从规则的角度来解决这个问题。这将是最大的挑战-创建一个满足大多数情况的综合规则集。


用人类术语定义什么是不应基于空格拆分的单位。名称示例是一个。
对于空白拆分的每个例外,请创建一组规则以识别它。对于名称示例:2个或更多个连续的大写单词,中间有或没有特定于语言的非大写单词(例如“ de”)。
将每个规则实现为自己的类,可以在循环时调用它。
根据空格拆分整个字符串,然后对其进行循环,跟踪之前出现的令牌和最新的令牌,为每个令牌应用规则类。


规则isName的示例:


循环1:(eg.: isName = false
循环2:"Renato isName = true
循环3:Dinhani isName = true
循环4:Conceição"). isName = true
循环5:Another isName = false


留下您:(eg.:"Renato Dinhani Conceição").Another

10-07 19:07