【问题标题】:Extracting groups of unstructured text to for later NLP?提取非结构化文本组以供以后的 NLP 使用?
【发布时间】:2020-07-16 19:53:39
【问题描述】:

我是数据挖掘/文本挖掘的新手,所以我不确定我使用的术语是否正确。我正在尝试提出一个流程来提取相关内容组,以便以后应用 NLP 和其他技术从中提取有意义的数据。我的起始数据看起来像这样:

Product Name - $-25- 15
Product Name - $3

Product Bundle $100
-Product 1
-Product 2 Condition
-Product 3 Condition

Product - Version - Condition $100

Product
Extras
Extras

More Info
$20 

Product
Extras
Condition
$15

Product (Condition) 50
Product (Condition) 25
Product (Condition) 10

目标是获得这样的列表,其中每个“列表”都有一个唯一条目,并与相关元数据分组:

[Product Name - $-25- 15], [Product Name - $3], [Product Bundle $100 -Product 1 -Product 2 Condition -Product 3 Condition], [Product - Version - Condition $100] 

全文由许多不同的作者撰写,并且经常在单个帖子中切换格式,因此我无法检测它的格式并处理整个文档。所有格式的一个共同点是它们都有新的换行符而不是密集的文本段落。因此,我对如何处理它有一些想法:

选项 1:初级

  1. 用换行符将文档拆分为数组 (\n)
  2. 如果条目之间有多余的空白,则将前面的分组
  3. 如果没有多余的空间,检测是否有价格,如果有则考虑它是自己的组

此选项非常简单,可以在双倍行距时使用。但是,它使用数字作为启发式方法来确定它是否是一个新组,因为产品名称、附加信息、条件可能包含单行距时的数字。

选项 2:自然语言处理

此选项将尝试将文档中的每个单词分类为产品名称、条件、属性、价格。然后再次处理文档以对文本进行分组,使其具有名称和价格以及可选的条件和额外的元数据。

这种方法的问题在于,附加组件和捆绑包也是产品,因此当它们属于“父”产品时,对它们进行分类将确定它们是具有元数据的唯一条目,因为它们在文档中的间隔方式.

选项 3:还有别的吗?

我的第一个想法是先将文档处理成组,这样当 NLP 知道该组中的所有单词都与同一个产品相关时。我有一个所有产品名称的列表和一个非常好的所有条件之一。附加内容、版本和其他文本是独一无二的,因此在尝试确定如何分组时可能会导致一些问题。

似乎它可能需要将两者混合,因为作者如何分隔它们最终是所有东西的捆绑方式。然而,如果没有其他过程,我们不会立即知道下一组内容是与第一个列表相关还是与新列表相关。

输入

Mario Party - $10

Party Games Bundle $100
-Super Mario Bros
-Mario World - NEW

Donkey Kong - 2017 Version - Used $10

Wii Sports
Includes Controllers

Also includes memory card
$10 

Grand Theft Auto
San Andreas
Includes poster
Used
$10

Zelda (Unopened box) 10

输出 (JSON)

{ listings: [
    { name: 'Mario Party', condition: null, version: null, currency: '$', price: 10, includes: null },
    { name: 'Party Games Bundle', condition: null, version: null, currency: '$', price: 100, includes: ['Super Mario Bros', 'Mario World - NEW'] },
    { name: 'Donkey Kong', condition: 'Used', version: '2017 Version', currency: '$', price: 10, includes: null },
    { name: 'Wii Sports', condition: null, version: null, currency: '$', price: 10, includes: ['Includes Controllers', 'Also includes memory card'] },
    { name: 'Grand Theft Auto', condition: 'Used', version: 'San Andreas', currency: '$', price: 10, includes: 'Includes poster' },
    { name: 'Zelda', condition: 'Unopened box', version: null, currency: '$', price: 10, includes: null }
] }

【问题讨论】:

  • 能否分享示例输入数据和最终输出数据,以便我们提供更好的帮助。
  • @SidharthMacherla 感谢您的反馈。我添加了示例输入和输出数据。

标签: nlp data-mining text-mining information-retrieval information-extraction


【解决方案1】:

如果有人愿意在一段时间内训练模型并提高准确性,一篇文章 here 将有助于这样做。

【讨论】:

  • 我对此持开放态度,但我对某些 NLP 方法的担忧是我没有太多的训练数据。随着时间的推移,我每周可以获得六份文件。听起来大多数方法需要数万到数百万个文档才能有效工作。虽然我可以随着时间的推移提高准确性,但它可能永远不会达到它需要工作的水平。
猜你喜欢
  • 2013-10-02
  • 2018-10-28
  • 2016-09-07
  • 2016-02-15
  • 2016-02-01
  • 2011-08-18
  • 1970-01-01
  • 2021-11-29
  • 2019-12-18
相关资源
最近更新 更多