当前位置: 首页 > article >正文

C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码

1 分词

分词是自然语言处理的基础,分词准确度直接决定了后面的词性标注、句法分析、词向量以及文本分析的质量。英文语句使用空格将单词进行分隔,除了某些特定词,如how many,New York等外,大部分情况下不需要考虑分词问题。但有些情况下,没有空格,则需要好的分词算法。

简单的分词算法主要有:

2 正向最大匹配

从左到右尽可能划分出一段连续字符,使得其等于词典中的某个词,然后将这段连续字符提取出来,对余下的部分进行同样的操作。如果第一个字符不是词典中任何一个词的前缀,那么这个字符单独作为一个词。

3 逆向最大匹配

跟正向最大匹配的唯一不同是从右到左尽可能划分出一段连续字符。

4 双向最大匹配

歧义指对于一个句子有多个分词结果。汉语文本中 90.0%左右的句子,FMM 和 BMM 的切分完全重合且正确,9.0%左右的句子 FMM 和 BMM 切分不同,但其中必有一个是正确的(歧义检测成功),只有不到1.0 %的句子,或者 FMM 和 BMM 的切分虽重合却是错的,或者FMM 和 BMM 切分 不同但两个都不对(歧义检测失败)。
 

本文介绍了基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法及其源代码。

5 节点信息

public class TrieNode
{
    public TrieNode[] children { get; set; } = new TrieNode[26];

    // isEndOfWord is true if the node represents
    // end of a word
    public bool isEndOfWord { get; set; } = false;

    public TrieNode()
    {
        isEndOfWord = false;
        for (int i = 0; i < 26; i++)
        {
            children[i] = null;
        }
    }
}

public class TrieNode
{
    public TrieNode[] children { get; set; } = new TrieNode[26];

    // isEndOfWord is true if the node represents
    // end of a word
    public bool isEndOfWord { get; set; } = false;

    public TrieNode()
    {
        isEndOfWord = false;
        for (i


http://www.kler.cn/a/271284.html

相关文章:

  • 【Algorithms 4】算法(第4版)学习笔记 18 - 4.4 最短路径
  • LeetCode hot100-10
  • 四连杆机构运动学仿真 | 【Matlab源码+理论公式文本】
  • 布隆过滤器原理介绍和典型应用案例
  • LeetCode 2684.矩阵中移动的最大次数:一列一列处理,只记能到哪行(BFS)
  • 计算机网络-概述
  • 蓝桥杯第八届A组:分巧克力
  • 开源导出html表格项目-easyHtml
  • mac电脑修改终端zsh显示的用户名
  • Android Selinux详解[四]--新增服务标签相关
  • 【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’
  • 每天学习一个Linux命令之scp
  • 【渗透测试】redis漏洞利用
  • 【强化学习笔记一】初识强化学习(定义、应用、分类、性能指标、小车上山案例及代码)
  • cesiumlab中shp转3dtiles白模效果一
  • nginx实时流量拷贝ngx_http_mirror_module
  • 日期与时间(Java)
  • 使用Thymeleaf-没有js的html模板导出为pdf
  • MongoDB——linux中yum命令安装及配置
  • 代码分支管理