首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用用户定义的字典实时翻译用户输入?

如何使用用户定义的字典实时翻译用户输入?
EN

Stack Overflow用户
提问于 2015-03-19 18:43:20
回答 1查看 476关注 0票数 0

我试图用PHP将用户的实时输入转换成他们定义的语言。

例如,用户创建以下字典(左侧为输入,右侧为输出):

代码语言:javascript
复制
[
    "A" => "alpha",
    "B" => "bravo",
    "CD" => "charlie delta"
]

然后,用户输入以下内容(详见下面的编辑):

代码语言:javascript
复制
"A", "B", "C", "D"

如何实时转换这些输入:

代码语言:javascript
复制
|-------------|---------------------------------|
| input       | output                          |
|-------------|---------------------------------|
| "A"         | "alpha"                         |
| "A" + "B"   | "alpha" + "bravo"               |
| "AB" + "C"  | "alpha bravo" + ?               |
| "ABC" + "D" | "alpha bravo" + "charlie delta" |
|-------------|---------------------------------|

如果输入字符串和输出字符串之间是一对一的关系,那就没有问题了。但是,多个输入字符串可能与单个输出字符串相关(例如,"CD“是"charlie”)。

可能的解决方案

我考虑将输入字符串标记为n-gram,其中n是用户字典中单个输出的最大输入数(在上面的示例中,n将是2,因为"CD")。

类似这样的算法:

  1. 用户输入"A“。
  2. 我标记输入字符串:
  3. 我输出"alpha“。
  4. 用户将"B“附加到输入字符串("A”+ "B")。
  5. 我将新输入标记为bigram:
  6. 我将"beta“附加到输出字符串("alpha”+ "beta")。
  7. 用户将"C“附加到输入字符串("AB”+ "C")。
  8. 我将新输入标记为bigram:
  9. 我没有附加任何输出,因为没有点击。
  10. 用户将"D“附加到输入字符串("ABC”+ "D")。
  11. 我将新输入标记为bigram:
  12. 我将"charlie“附加到输出字符串("alpha bravo”+ "charlie“)。

当然,n克随输入数的增加而增加。有没有更简单或更快的解决方案,我没有看到?

编辑2015年3月19日:

用户的字典可能涉及数万个术语。所以,我把它存储在数据库里。我还将输出存储在数据库中供以后使用。

在前端,用户在文本输入中输入输入,输入的值通过后台的AJAX请求发送给PHP。

例如..。

  1. 用户在文本输入中输入"A“。
  2. 按一下键,Javascript获取文本输入的值,将其发送到后台的服务器,并清除输入的值。
  3. 用户在文本输入中输入"B“。
  4. 在键上,Javascript捕获文本输入的值,将其发送到后台的服务器,并清除输入的值。
  5. ...So等等..。

我可能会收集文本输入,然后每30秒左右发送一次,以便在服务器上进行处理,这样请求就不会开始堆叠,但是您知道了。

EN

回答 1

Stack Overflow用户

发布于 2015-03-19 19:49:20

对于这个应用程序来说,PHP不是一个好主意。PHP是一种服务器端技术,这意味着每次您想让它解释和更改输入值时,都要触发一个submit。唯一可行的方法是让用户完成条目(填写整个字段),将其提交给服务器,字符串拆分它,解析和替换,然后通过页面刷新返回值。对用户不太友好。

因此,您几乎肯定希望使用Javascript。

在javascript中,这并不是非常困难。您必须定义您的转换列表,很可能是通过从服务器获取它的ajax调用。您可以将结果数据分配给一个可以进行查找以获取值的对象。您将在输入字段上创建一个keyup或change,在这种情况下,您将评估输入,确定来自定义对象的输出,并将其返回到另一个字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29152582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档