Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从非常可变的字符串中提取数据_Php_Algorithm_Detection_Extraction_Data Extraction - Fatal编程技术网

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
    get
    approxer 1
    之后,或紧跟在找到
    NAME2
    之前
  • 要获得知识水平的评估,您必须:

  • 使用
    [0;1]
    中的值手动估算前100个英语形容词-这一过程称为语言变量的模糊化
  • 找到合适的类别(“好”、“坏”、“前中间”、“本地”等)和隶属函数,将这些估计区分为可理解的语言形式——这个过程称为
  • 应用所有可能的规则(根据步骤2),您可以使用这些规则将知识估计为
    1,2,3,4,5
  • 将步骤3的结果反模糊化(mb最好说“聚合”)为英语和德语的整数
    1,2,3,4,5
    (分别)
  • 如果您有一些关于用户的附加信息,这些信息可能对第3步有所帮助(就像我在观察1中所做的那样)-我认为您应该找到更多的观察结果,因为使用adjactives的估计是相当主观的。例如,如果你的用户年龄在14岁以下——我认为没有机会找到“高级”演讲者,但如果你的网站被称为“青少年德语”——他仍然可能得到“5”


    PS:如果你能得到任何积极的结果,它可能是学术出版的好材料!)

    与其试图破译任何可以想象的组合,不如强迫一致的输入。可惜为时已晚。数据库已被填充。它根本不必是完美的。如果可能的话,我只想被发现。