Как извлечь бренд из названия продукта

У меня есть два веб-сайта, и у меня есть данные в моих руках, теперь я хочу провести анализ с этими данными

У меня есть два названия продукта (Бренд + Название продукта), я хочу извлечь только название бренда

http://www.thehut.com/jeans-clothing/men/clothing/brave-soul-men-s-cardiff-jeans-denim/10741907.html

На указанном выше сайте название продукта

Brave Soul Men's Swansea Jeans - Denim

Фирменное наименование

Brave Soul

Так что я хочу только

Brave Soul

Amazon веб-ссылка

http://www.amazon.in/gp/product/B00L8WT2UI

Аналогично, на указанном выше сайте название продукта

Apple iPhone 5c (White, 8GB)

Фирменное наименование

Apple

Так что я хочу вывод, как

Brave Soul
Apple

2 ответа

Решение

Информация, которую вы пытаетесь получить, на самом деле отсутствует.

Если вы возьмете две строки, каждая из которых может иметь любое количество пробелов, и соедините их вместе с пробелом, вы уже не сможете однозначно сказать, какой пробел соединял две строки и какие пробелы были частью строк.

Итак, у вас есть несколько вариантов:

Во-первых, в каждом продукте не так много места, так что вы можете просто попробовать все возможности: Brave и продукт Soul Men's Swansea Jeans - Denim, то бренд Brave Soul и продукт Men's Swansea Jeans - Denim, то бренд Brave Soul Men's и продукт Swansea Jeans - Denim и так далее для других 3 возможностей.

Во-вторых, если вы можете собрать список всех торговых марок откуда-то еще и спрятать их в set (или таблицу базы данных или что-то еще), вы можете предварительно отфильтровать возможности, прежде чем пробовать их все в сравнительно медленных веб-запросах к Amazon. Например, если у вас есть список всех брендов, просто проверьте, какие из Brave, Brave Soul, Brave Soul Men's, Brave Soul Men's Swansea и т. д. являются реальными брендами, и только тестировать их.

Между тем, это все еще не будет идеальным, потому что есть почти наверняка случаи, которые неоднозначны. Например, есть бренд Apple, а также бренд Apple Records Итак, что происходит, когда вы пытаетесь разделить Apple Records Master Collection? У вас есть две возможности, а не только одна. Все, что вы можете сделать, - это создать свой код, который каким-то образом справится с этим (и модульный тест, который вы сделали правильно).

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

Другие вопросы по тегам