当前位置: 首页 > 面试题库 >

从没有空格/组合词的文本中检测最可能出现的词

周博达
2023-03-14
问题内容

如何从组合字符串中检测和拆分单词?

例:

"cdimage" -> ["cd", "image"]
"filesaveas" -> ["file", "save", "as"]

问题答案:

这是一个动态编程解决方案(实现为记忆功能)。给定具有频率的单词词典,它会将输入文本拆分为给出整体最可能短语的位置。您必须找到一个真实的单词表,但是为了简单的测试,我列出了一些虚构的频率。

WORD_FREQUENCIES = {
    'file': 0.00123,
    'files': 0.00124,
    'save': 0.002,
    'ave': 0.00001,
    'as': 0.00555
}

def split_text(text, word_frequencies, cache):
    if text in cache:
        return cache[text]
    if not text:
        return 1, []
    best_freq, best_split = 0, []
    for i in xrange(1, len(text) + 1):
        word, remainder = text[:i], text[i:]
        freq = word_frequencies.get(word, None)
        if freq:
            remainder_freq, remainder = split_text(
                    remainder, word_frequencies, cache)
            freq *= remainder_freq
            if freq > best_freq:
                best_freq = freq
                best_split = [word] + remainder
    cache[text] = (best_freq, best_split)
    return cache[text]

print split_text('filesaveas', WORD_FREQUENCIES, {})

--> (1.3653e-08, ['file', 'save', 'as'])


 类似资料:
  • 我试图找出这种情况下的正则表达式模式,以便序列化结果: 我想捕捉所有有限制的单词/单词组合: 只有单词,没有数字或字符,除了撇号 中间有空格的单词要包含在一起 到目前为止,我已经想出了: 但我有尾随空格。所以这和“七月”匹配,而不是“七月”。如何在保留单词之间的空格的同时防止尾随空格。

  • 问题内容: 我有一个像这样的词,它由两个简单的词组合而成,没有空格。 我想知道哪种Lucene Analyzer可以将这种单词标记为两个单独的单词? 问题答案: 有一个看作为在Solr的说明 该过滤器使用组成词的词典将复合词拆分或分解为单个词。每个输入令牌均不变地传递。如果还可以将其分解为子字,则每个子字也将在同一逻辑位置添加到流中。 在:“ Donaudampfschiff dummkopf”中

  • 我有一些不同语言的文本,可能有一些拼写错误或其他错误,我想检索他们自己的词汇。一般来说,我对自然语言处理没有经验,所以可能我使用了一些不正确的单词。 关于词汇,我指的是一种语言的单词集合,其中每个单词都是唯一的,不考虑性别、数字或时态的屈折变化(例如,think、thinks和thought are都是考虑-思考)。 这是一个主要问题,所以让我们把它简化为一种语言的词汇检索,例如英语,并且没有错误

  • 我如何从"CSV示例"创建一个像"最终结果"这样的数组? 背景 我正在构建一个用于测试的实验室文件系统,我想创建一个看起来有点像真实文件系统的文件夹结构。我有几个包含文件夹信息的CSV文件。 我想采用上面的每个组合,创建一个包含以下所有文件夹的文件系统。 一旦我有了上面所有完整路径的数组,就像做一样简单: 问题 我希望能够为任何CSV文件做到这一点,不管我有多少列,头名称是什么,或者每列有多少值。

  • 问题内容: $(“#topNav” + $(“#breadCrumb2nd”).text().replace(” “, “”)).addClass(“current”); 这是我的代码的一部分。我想在获取另一个ID的text属性后向ID添加一个类。问题在于,持有我需要的文本的ID包含字母之间的空格。 我希望删除空白。我已经尝试过,但这只能部分起作用。该只删除第一个空间。 问题答案: 您必须告诉re

  • 问题内容: 对于这个新手问题,我感到很抱歉,但是我对编程还是有点陌生(从几天前开始)。基本上我想做的是保留一个文件,并保留另一个文件的所有单词出现 我知道我可以这样做: 事情是,在那之后,我想获取第二个文件,再次计算出现次数并更新第一个文件。之后,我取第三份文件,依此类推。 我在做什么,此刻工作没有任何问题(我使用,和),但它看起来相当缓慢。 我很确定使用,仅使用命令就可以有一种非常有效的方法,但