Php 如何使用用户定义的词典实时翻译用户输入?
我正在尝试使用PHP将用户输入实时转换为他们定义的语言 例如,用户创建以下词典(其中左侧为输入,右侧为输出): 然后,用户输入以下内容(有关详细信息,请参阅下面的编辑): 如何实时转换这些输入:Php 如何使用用户定义的词典实时翻译用户输入?,php,string,dictionary,translation,Php,String,Dictionary,Translation,我正在尝试使用PHP将用户输入实时转换为他们定义的语言 例如,用户创建以下词典(其中左侧为输入,右侧为输出): 然后,用户输入以下内容(有关详细信息,请参阅下面的编辑): 如何实时转换这些输入: |-------------|---------------------------------| | input | output | |-------------|---------------------------------| |
|-------------|---------------------------------|
| input | output |
|-------------|---------------------------------|
| "A" | "alpha" |
| "A" + "B" | "alpha" + "bravo" |
| "AB" + "C" | "alpha bravo" + ? |
| "ABC" + "D" | "alpha bravo" + "charlie delta" |
|-------------|---------------------------------|
如果输入字符串和输出字符串之间是一对一的关系,那么就不会有问题。但是,多个输入字符串可能与单个输出字符串相关(例如,“CD”是“charlie delta”)
可能的解决方案
我考虑将输入字符串标记为n-grams,其中n是用户字典中单个输出的最大输入数(在上面的示例中,由于“CD”,n将为2)
类似这样的算法:
|--------|---------|
| tokens | hits |
|--------|---------|
| "A" | "alpha" |
|--------|---------|
|--------|--------|
| tokens | hits |
|--------|--------|
| "B" | "beta" |
| "AB" | |
|-----------------|
|--------|--------|
| tokens | hits |
|--------|--------|
| "C" | |
| "BC" | |
|-----------------|
|--------|-----------------|
| tokens | hits |
|--------|-----------------|
| "D" | |
| "CD" | "charlie delta" |
|--------------------------|
|--------|--------|
| tokens | hits |
|--------|--------|
| "B" | "beta" |
| "AB" | |
|-----------------|
|--------|--------|
| tokens | hits |
|--------|--------|
| "C" | |
| "BC" | |
|-----------------|
|--------|-----------------|
| tokens | hits |
|--------|-----------------|
| "D" | |
| "CD" | "charlie delta" |
|--------------------------|
|--------|--------|
| tokens | hits |
|--------|--------|
| "B" | "beta" |
| "AB" | |
|-----------------|
|--------|--------|
| tokens | hits |
|--------|--------|
| "C" | |
| "BC" | |
|-----------------|
|--------|-----------------|
| tokens | hits |
|--------|-----------------|
| "D" | |
| "CD" | "charlie delta" |
|--------------------------|
我可能会收集文本输入,并每隔30秒左右发送一次,以便在服务器上进行处理,这样请求就不会开始堆叠,但您会明白这一点。PHP对于这个应用程序来说不是一个好主意。PHP是一种服务器端技术,这意味着您必须在每次想要让提交解释和更改输入值时启动提交。唯一可行的方法是让用户完成条目(填写整个字段)将其提交给服务器,对其进行字符串拆分、解析和替换,然后通过页面刷新返回值。不是非常友好 因此,您几乎肯定会想使用Javascript
在javascript中,这并不十分困难。您必须定义转换列表,可能是通过从服务器获取转换列表的ajax调用。您可以将结果数据分配给一个对象,您可以对该对象进行查找以获取值。您需要在输入字段上创建一个keyup或change事件,在该事件中,您需要评估输入,确定定义对象的输出,并将其返回到另一个字段。Hey-o!谢谢你的回答。我把问题限制在PHP上,因为我将在PHP上完成繁重的工作。用户的字典可能有数千个条目,我需要将翻译保存到数据库中。我不能用Javascript完成所有的工作,但是,你是对的。当用户输入时,我会在后台通过AJAX请求将用户输入发送到PHP。我只是想弄清楚是否有比n-grams更快的方法来翻译输入。