3

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

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

4

3 回答 3

3

可能的实施建议:

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

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

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

于 2010-09-18T02:50:54.500 回答
2

您需要使用马尔可夫链。

您可能想从查看这里开始。示例输出也很有趣。

于 2010-09-19T19:35:35.480 回答
1

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

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

例如:

我输入:'a'

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

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

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

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

于 2010-09-19T19:21:53.830 回答