Извлечение групп неструктурированного текста для последующего НЛП? - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок в области интеллектуального анализа данных / текстового анализа, поэтому я не уверен, что использую правильную терминологию. Я пытаюсь придумать процесс извлечения групп связанного контента для последующего применения НЛП и других методов извлечения значимых данных из него. У меня есть начальные данные, которые выглядят примерно так:

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. Если места нет, определите, есть ли цена, если это так, рассмотрите его собственную группу

Этот параметр очень прост и может работать при двойном интервале. Однако он не может использовать число в качестве heuristi c, чтобы определить, является ли это новая группа, так как названия продуктов, дополнения, условия могут содержать числа, если они разделены одним пробелом.

Опция 2: NLP

Эта опция будет пытаться классифицировать каждое слово в документе как Название продукта, Условие, Атрибут, Цена. Затем снова обработайте документ, чтобы сгруппировать текст так, чтобы он имел имя и цену, а также, при необходимости, условие и дополнительные метаданные.

Проблема этого подхода заключается в том, что дополнительные элементы и комплекты также являются продуктами, поэтому их классификация будет определите, что они являются уникальной записью с метаданными, если они принадлежат «родительскому» продукту из-за того, как они расположены в документе.

Вариант 3: что-то еще?

Моей первой мыслью было сначала обработать документ по группам, чтобы, когда НЛП знал, что все слова в этой группе относились к одному и тому же товар. У меня есть список всех наименований продуктов и довольно хорошее условие. Дополнения, версии и другой текст уникальны, поэтому могут возникнуть некоторые проблемы при попытке определить, как группировать.

Кажется, что может потребоваться сочетание этих двух факторов, потому что то, как их расставляет автор, в конечном счете, все в комплекте. Однако мы не сразу узнаем, относится ли следующий набор контента к первому или новому списку без какого-либо другого процесса.

INPUT

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 }
] }

1 Ответ

0 голосов
/ 17 апреля 2020

Если кто-то открыт для обучения модели и повышения точности в течение определенного периода времени, статья здесь поможет в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...