【问题标题】:How does Google Scribe work?谷歌抄写员是如何工作的?
【发布时间】:2010-09-08 05:01:21
【问题描述】:

我问的是实验室的新功能“Google Scribe”。这是链接:http://scribe.googlelabs.com/

我对后端和前端感兴趣,但主要是后端。我想用一个非常具体的数据集(来自我自己的文档)构建类似的东西。我认为它的前端相当简单,我什至可以使用现有的自动完成插件来完成任务。

【问题讨论】:

    标签: javascript ruby search statistics code-completion


    【解决方案1】:

    可能的实施建议:

    后端: 构建并维护一个NxNxW 稀疏矩阵A(例如,实现为Hash),其中N 是您的词汇量,W 是最大值您希望维护的上下文(以文字形式)(例如W=4 可能没问题。)查看一些样本数据以播种/初始化A,以便A[n1,n2,w] 计算单词n2 在@987654330 出现的次数单词n1 之后的@th 位置(尊重句子边界。)

    前端: 当用户键入时,要求后端使用 A 根据用户完全输入的最后一个 W 单词来评估(并排名)最可能的后续单词在当前句子中;只显示那些以用户正在输入的内容开头的建议(即用户的“当前”(部分)单词。)

    可选择让后端更新M 基于用户已完成输入的字词,无论是即时(当用户返回执行更正时具有挑战性),或提交最终文本(最简单),或通过一些定期作业评估自上次作业运行以来提交的文本。

    【讨论】:

    • 正如aleemb 正确指出的那样,上述的正式术语是W-degree Markov 链。
    【解决方案2】:

    你需要使用马尔可夫链。

    您可能想从查看here 开始。 sample output 也很有趣。

    【讨论】:

      【解决方案3】:

      (我对此并不肯定,如果我错了,请纠正我)

      Google Scribe 使用的系统(或至少是一个非常相似的系统)本质上会使用树状数据结构来存储所有可能的单词。某种形式的搜索算法,它可以根据已知词汇查看完成单词的所有可能方式。 (可能是存储在其数据库中的旧搜索查询的基础)并按照它们出现的频率对其进行排序。

      例如:

      我输入:'a'

      词汇:'at' 'apple' 'atrocious'

      所以:“at”使用最多,“apple”第二多,“atrocious”最少。

      就像我说的,我不确定这是否是他们使用的系统,但它应该有类似的结果。

      为了检索出现的可能性,您可以扫描您正在搜索的文档,或者只是逐个查询地存储以检查您过去的搜索。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        • 1970-01-01
        • 2013-03-16
        • 2012-01-09
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多