Как извлечь бренд из названия продукта
У меня есть два веб-сайта, и у меня есть данные в моих руках, теперь я хочу провести анализ с этими данными
У меня есть два названия продукта (Бренд + Название продукта), я хочу извлечь только название бренда
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 являются брендом, поскольку они повторяются многократно эта неоднозначность может быть успешно решена).