分析单行文本并提取实体信息

时间:2019-05-29 08:13:26

标签: c#

对不起,标题模糊,我正在尝试查找有关不确定哪些内容的信息。我试图从单行文本中提取信息,就像进行认知分析一样,但是只是信息不是真正的地名/名称/情感等,而是产品信息。假设有一个销售人员销售手机。他可能具有以下格式的CSV / Excel文件:

Producer, Model, Price, Quantity
Huawei, P10 Lite, 100$, 10
Nokia, 3210, 1000$, 1
...

现在,即使数据结构不同,解析起来也非常容易。困难的部分是何时将其收集到一行:

Product, price, quantity
Huawei P10 Lite, 100$, 1

或者即使它是用另一种方言写的,例如如果是Huawéi而不是Huawei(我知道那个特定的例子没有太大意义,但考虑一下法国的东西)。我也不能真正地正则表达式,因为我必须将公司/产品与参考数据库中的实际公司相匹配。

甚至是一行。我一直在寻找图书馆,但找不到任何东西。我自己的想法一直是围绕着拥有某种形式的查找表,然后简单地使用.Contains()进行的,但这似乎确实很昂贵。

那么关于如何执行此操作的任何想法,库或一般做法?

编辑:显示基本原理的代码段。对于我来说,最棘手的部分是如果有100行,以一种高性能的方式执行此操作,并且可以有不同的方式来解析每个相同的值。

List<string> Companies = new List<string>(){ "Huawei", "Google", "Sony", "Apple" };
List<string> Models = new List<string>(){ "P10", "P10 Pro", "Iphone X", "Iphone XS", "Pixel" };

string cellText = "Huawei P10 Pro";

Line myLine = new Line{ 
    Company = Companies.Where(x => cellText.Contains(x)).FirstOrDefault(),
    Model = Models.Where(m => cellText.Contains(m)).FirstOrDefault()
};

Console.WriteLine("Company: " + myLine.Company + " - Model: " + myLine.Model);

0 个答案:

没有答案