gpt4 book ai didi

java - 文本分割 : dictionary-based word splitting

转载 作者:搜寻专家 更新时间:2023-11-01 00:53:12 26 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

6年前关闭。




Improve this question




背景

将数据库列名称拆分为等效的英文文本以作为数据字典的种子。英语词典是根据公司文档、维基和电子邮件的语料库创建的。字典 ( lexicon.csv ) 是一个包含单词和概率的 CSV 文件。因此,某人(在电子邮件或维基页面上)写下“治疗师”一词的频率越高,“治疗师姓名”拆分为“治疗师姓名”而不是其他内容的可能性就越大。 (词典可能甚至不会包括强奸犯这个词。)

源代码

  • TextSegmenter.java @ http://pastebin.com/taXyE03L
  • SortableValueMap.java @ http://pastebin.com/v3hRXYan

  • 数据文件
  • lexicon.csv - http://pastebin.com/0crECtXY
  • 列.txt - http://pastebin.com/EtN9Qesr

  • 问题(2011-01-03更新)

    当遇到以下问题时:
    dependentrelationship::end depend ent dependent relationship
    end=0.86
    ent=0.001
    dependent=0.8
    relationship=0.9

    存在这些可能的解决方案:
    dependentrelationship::dependent relationship
    dependentrelationship::dep end ent relationship
    dependentrelationship::depend ent relationship

    词典包含单词及其相对概率(基于词频): dependent 0.8 , end 0.86 , relationship 0.9 , depend 0.3 , 和 ent 0.001 .

    消除 dep end ent relationship的解决方案因为 dep不在词典中(即 75% 的单词使用率),而其他两个解决方案覆盖了词典中 100% 的单词。在剩余的解中, dependent relationship 的概率是 0.72 而 depend ent relationship是 0.00027。因此我们可以选择 dependent relationship作为正确的解决方案。

    有关的
  • How to separate words in a "sentence" with spaces?
  • Top Coder - Text Segmentation Presentation 1/2
  • Top Coder - Text Segmentation Presentation 2/2
  • Linear Text Segmentation using Dynamic Programming Algorithm
  • Dynamic Programming: Segmentation
  • Dynamic Programming: A Computational Tool



  • 鉴于:
    // The concatenated phrase or database column (e.g., dependentrelationship).
    String concat;

    // All words (String) in the lexicon within concat, in left-to-right order; and
    // the ranked probability of those words (Double). (E.g., {end, 0.97}
    // {dependent, 0.86}, {relationship, 0.95}.)
    Map.Entry<String, Double> word;

    您将如何实现一个例程,根据词典覆盖率和概率生成最可能的解决方案?例如:
    for( Map.Entry<String, Double> word : words ) {
    result.append( word.getKey() ).append( ' ' );

    // What goes here?

    System.out.printf( "%s=%f\n", word.getKey(), word.getValue() );
    }

    谢谢!

    最佳答案

    Peter Norvig 用 python 写了一些东西。

    http://norvig.com/ngrams/ngrams.py

    包含一个名为段的函数。它运行一系列单词的朴素贝叶斯概率。效果很好。可以成为您尝试在 Java 中完成的工作的良好基础。

    如果您将其转换为 java,我将有兴趣查看实现。

    谢谢。

    麦克风

    关于java - 文本分割 : dictionary-based word splitting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580877/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com