Php 从非常可变的字符串中提取数据
我希望你能帮助我创建一个算法。 我需要的是从一个人输入的字符串中提取数据(一个不在乎我必须这么做的人)。在这个字符串中,他提出了语言要求。数据已经存在,因此要求用户正确输入数据已经太晚了。字符串可能如下所示:Php 从非常可变的字符串中提取数据,php,algorithm,detection,extraction,data-extraction,Php,Algorithm,Detection,Extraction,Data Extraction,我希望你能帮助我创建一个算法。 我需要的是从一个人输入的字符串中提取数据(一个不在乎我必须这么做的人)。在这个字符串中,他提出了语言要求。数据已经存在,因此要求用户正确输入数据已经太晚了。字符串可能如下所示: "English good arabic good german basic knowledges" "good in english, a little bit german" "english, german" "english - very good, ge
"English good arabic good german basic knowledges"
"good in english, a little bit german"
"english, german"
"english - very good, german - preferred"
现在我只想把重点放在德语和英语上。我想知道他们是否需要,如果可能的话,需要多少(可能是从1年级“稍微了解一点”到5年级“非常擅长”)
我想到了一种算法,将字符串拆分成单词(这不是问题),然后循环遍历,检测这个单词是指德语还是英语(可能是通过一些正则表达式,如/(deu | ger)/Ui
和/(eng)/Ui
),然后获得需求级别(棘手的部分来了),哪一个应该出现在下面或前面的单词中(或者根本不存在)
你对如何创建这样的功能有什么想法吗
它应该在PHP7 btw上运行,但这是关于算法的思想,而不是实现(尚未)。此方法使用模糊集理论,可能只适用于80%。这并不坏,因为任何模糊算法都假设数据集中存在异常值 你的例子可以描述为
LANG1
+分隔符
+LANG2
+分隔符
在哪里
LANG
=NAME
+形容词
或形容词
+NAME
分隔符
=,
代码>
甚至可能是虚拟的
要解析名称
和形容词
,必须使用近似字符串匹配
我的意见:
LANG1
优于LANG2
LANG
可以包含一个形容词
有些形容词可能会打断观察1。(我认为可以通过几个“如果”语句进行检查)
有些形容词可以用来估计知识水平
如果LANG1
和LANG2
之间的separator
是虚拟的,我们可以添加代码>紧跟在NAME1
getapproxer 1
之后,或紧跟在找到NAME2
之前
要获得知识水平的评估,您必须:
使用[0;1]
中的值手动估算前100个英语形容词-这一过程称为语言变量的模糊化
找到合适的类别(“好”、“坏”、“前中间”、“本地”等)和隶属函数,将这些估计区分为可理解的语言形式——这个过程称为
应用所有可能的规则(根据步骤2),您可以使用这些规则将知识估计为1,2,3,4,5
将步骤3的结果反模糊化(mb最好说“聚合”)为英语和德语的整数1,2,3,4,5
(分别)
如果您有一些关于用户的附加信息,这些信息可能对第3步有所帮助(就像我在观察1中所做的那样)-我认为您应该找到更多的观察结果,因为使用adjactives的估计是相当主观的。例如,如果你的用户年龄在14岁以下——我认为没有机会找到“高级”演讲者,但如果你的网站被称为“青少年德语”——他仍然可能得到“5”
PS:如果你能得到任何积极的结果,它可能是学术出版的好材料!) 与其试图破译任何可以想象的组合,不如强迫一致的输入。可惜为时已晚。数据库已被填充。它根本不必是完美的。如果可能的话,我只想被发现。