2016-05-16 5 views
0

Я пишу текстовый синтаксический анализатор, который должен извлекать функции из описания продукта.Как извлечь функции из обычного текста?

Например:

text = "Canon EOS 7D Mark II Digital SLR Camera with 18-135mm IS STM Lens" 
features = extract(text) 
print features 

Brand: Canon 
Model: EOS 7D 
.... 

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

Если текст содержит измерения, как 50ml или 2kg, инвертированный индекс будет говорить 2kg -> Size и 50ml -> Size для например.

Проблема здесь в том, что когда я получаю значение, которое я раньше не видел, например 13ml, оно не будет обработано. Но поскольку шаблоны соответствуют размеру, мы можем пометить его как размер.

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

Мне было интересно, это лучший способ сделать это? Или есть лучший способ сделать это?

ответ

1

Возрастная проблема невидимых случаев. Вы можете тренировать свой скребок, чтобы захватить любые числовые символы, предшествующие определенным суффиксам (мл, кг и т. Д.), И относиться к ним как к размеру. Проблема с этим - это опечатки и другие плохо отформатированные тексты, которые могут войти в ваши данные структуры. Нет правильного ответа на то, как обращаться с ценностями, которые вы не видели раньше - вам придется либо самостоятельно проверять их, либо иметь правила вокруг них. Это зависит от вашего набора данных.

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

+0

Спасибо. Я думал так же. –

0

Если у вас есть обучающие данные, как это:

word label 
10ml size-valume 
20kg size-weight 
etc... 

вы могли бы обучить классификатор, основанный на символьные п-г, и что бы обнаружить, что МЛ размер-объем, даже если он видит 11-мл или ml11 и т. д., вы также должны преобразовать числа в одно число (например, 0), чтобы 11-мл рассматривался как 0-мл перед извлечением функции.

Для этого вам понадобится модуль предварительной обработки, а также большой учебный образец. Для извлечения функций вы можете использовать n-граммы символов scikit-learn, а также SVM.

Смежные вопросы