相关疑难解决方法(0)

分裂高棉语的可行解决方案?

我正在研究将高棉语(柬埔寨语)的长行分成单个单词(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

15
推荐指数
1
解决办法
1994
查看次数

如何用空格分隔"句子"中的单词?

背景

希望在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%完美; 以下结果是可以接受的:

  • enrollmenteffectivedate - >报名生效日期
  • enrollmentenddate - >注册男士日期
  • enrollmentrequirementset - >注册要求集

无论如何,人类都需要仔细检查结果并纠正许多结果.将一组2,000个结果减少到600次编辑将节省大量时间.要注意一些具有多种可能性的病例(例如,治疗师名称),要完全忽略这一点.

bash perl awk nlp text-segmentation

11
推荐指数
1
解决办法
1881
查看次数