我想知道机器学习领域中哪种技术可以解决下面的问题?(例如:分类、CNN、RNN等)
问题描述:
用户输入一个字符串,我希望分解这个字符串以获取我想要的信息。例如:
- 用户输入”R21TCCCUSISS”,经过代码分解后,我得到的信息:”R21″是产品类型,”TCC”是批号,”CUSISS”是原产地
- 用户输入”TT3SUAWXCCAT”,经过代码分解后,我得到的信息:”TT3S”是产品类型,”SUAW”是批号,”X”是用户输入的错误字符,”CCAT”是原产地
产品类型、批号和原产地的字符串长度不固定。例如,产品类型可能是”R21″或”TT3S”,意味着产品类型可能包含2或3个字符。
此外,有时字符串可能包含错误的输入信息,如上例2中的”X”所示。
我尝试寻找相关的解决方案,但最相关的我找到的是这个:https://github.com/philipperemy/Stanford-NER-Python
然而,我得到的字符串不是句子。句子包含空格和语法,但我的字符串不符合这种情况。
回答:
你的问题不适合用任何机器学习方法合理解决,因为你有一份定义好的产品类型列表,可能不存在任何简单的逻辑,而且通常你不会在连续空间(如向量空间等)中工作。机器学习的目的是从少量数据中构建回归函数,并希望/期待良好的泛化能力(回归函数适用于所有未见过的例子,过去、现在和未来)。
基本上,你是在尝试逆向工程输入的语法和生成过程(这可能是由一个算法完成的,包括可能的随机数生成器)。但为了确认你的分类函数正常工作,你需要所有数据也都是真实数据,这违背了机器学习的原则。
你需要列出所有定义好的产品类型(真实数据),并将输入的各个部分(是否使用正则表达式模式)分散到不同类型中(批号、原产地)。所谓的“学习”实际上是在构建一个函数(或几个函数,每个类型一个),逐个元素地填充一个映射(C++)或字典(C#),并使用它来解析输入。