我正在研究将高棉语(柬埔寨语)的长行分成单个单词(UTF-8)的解决方案.高棉语不会在单词之间使用空格.有一些解决方案,但它们远远不够(这里和这里),那些项目已经落伍了.
以下是需要拆分的高棉样本行(它们可能比这更长):
ចូរសរសើរដល់ទ្រង់ទ្រង់បានប្រទានទាំងអស់នោះមកដល់រូបដោយព្រោះអង្គព្រះយេស៊ូវហើយដែលមិនអាចរកការទាំងអស់នោះដោយសារការប្រព្រឹត្តរបស់អ្នកឡើយឡើយ.
创建分裂高棉语的可行解决方案的目标有两个:它将鼓励那些使用高棉遗留(非Unicode)字体转换为Unicode(具有许多好处)的人,并且它将使遗留的高棉语字体能够被导入进入Unicode以快速使用拼写检查器(而不是手动浏览和分割单词,使用大文档,可能需要很长时间).
我不需要100%的准确度,但速度很重要(特别是因为需要分成高棉语的行可能很长).我愿意接受建议,但目前我有一大堆高棉语单词正确分割(有一个不间断的空格),我创建了一个单词概率词典文件(frequency.csv)作为字典用于分词器.
我在这里发现这个使用Viterbi算法的 python代码,它应该运行得很快.
import re
from itertools import groupby
def viterbi_segment(text):
probs, lasts = [1.0], [0]
for i in range(1, len(text) + 1):
prob_k, k = max((probs[j] * word_prob(text[j:i]), j)
for j in range(max(0, i - max_word_length), i))
probs.append(prob_k)
lasts.append(k)
words = []
i = len(text)
while 0 < i:
words.append(text[lasts[i]:i])
i = lasts[i]
words.reverse()
return words, probs[-1]
def word_prob(word): return dictionary.get(word, 0) / total
def words(text): return re.findall('[a-z]+', …Run Code Online (Sandbox Code Playgroud) python nlp word-boundary text-segmentation southeast-asian-languages
希望在JasperServer中自动创建域.域是用于创建临时报告的数据的"视图".列的名称必须以人类可读的方式呈现给用户.
理论上,组织可以在报告中包含2,000多种可能的数据.数据来自非人类友好的名称,例如:
payperiodmatchcode labordistributioncodedesc依赖关系actionendoption actionendoptiondesc addresstype addresstypedesc historytype psaddresstype rolename bankaccountstatus bankaccountstatusdesc bankaccounttype bankaccounttypedesc beneficiaryamount beneficiaryclass beneficiarypercent benefitsubclass beneficiaryclass beneficiaryclassdesc benefitactioncode benefitactioncodedesc benefitagecontrol benefitagecontroldesc ageconrolagelimit ageconrolnotperiperiod
你会如何自动将这些名称更改为:
使用谷歌你的意思是引擎,但我认为它违反了他们的服务条款:
lynx -dump «url» | grep "Did you mean" | awk ...
任何语言都可以,但像Perl这样的文本解析器可能非常适合.(列名仅限英文.)
打破单词的目标不是100%完美; 以下结果是可以接受的:
无论如何,人类都需要仔细检查结果并纠正许多结果.将一组2,000个结果减少到600次编辑将节省大量时间.要注意一些具有多种可能性的病例(例如,治疗师名称),要完全忽略这一点.