Line 1: |
Line 1: |
| [[Category:Contribution Guidelines]] | | [[Category:Contribution Guidelines]] |
− | This is the brands of the product. The '''main brand''', generally clearly displayed on the front pack, '''should be entered first'''. A product can have other brands: | + | This is the brands of the product. |
− | * when a product is a brand sold by a big company: <code>Actimel</code> is sold by <code>Danone</code>, see https://world.openfoodfacts.org/product/4009700036810/actimel-granatapfel
| + | === Suggested solution for the taxonomy === |
− | * when a product is sold with its brand translated in two languages:
| + | Taking the observations, use cases and design considerations into account, it is possible to specify how this can be encoded in a taxonomy. The same approach as all the other taxonomies will be used for thus. |
− | ** <code>Nature Valley</code> is sometimes written <code>Val Nature</code>; see https://world.openfoodfacts.org/product/0065633280267/barre-granola-erable-et-cassonade-nature-valley
| |
− | ** <code>[https://en.wikipedia.org/wiki/No_Name_%28brand%29 No Name]</code> is also written <code>Sans nom</code>; represent [https://world.openfoodfacts.org/brand/no-name 100+ products for No Name] and [https://world-fr.openfoodfacts.org/marque/sans-nom 170+ products for Sans Nom].
| |
| | | |
− | When a product has more than one brand, the first brand in the field is taken as the main brand.
| + | An overview of the encoding used in the brands taxonomy: |
− | | + | * blocks/white lines - a single brand is defined by a block of text and are separated by white lines; |
− | There's no taxonomy for brands for the moment, so just do your best and don't waste too much time to enter brands.
| + | * definition - a single line defines the brand in a specific language, an attribute, etc. Each line starts with a name followed by parameters and separated by a colon |
− | | + | * parameters: |
− | === Data issues === | + | ** parent (<zz:) - a reference to another (parent) brand. Thus any attributes shared between parent and child only have to be specified in the parent; |
− | Some brands are difficult to read:
| + | ** key (''zz:'') - an unique is required, so that we can distinguish between brands with the same name; |
− | * is it <code>Coop</code>, <code>coop</code>, <code>COOP</code>, <code>CO OP</code>?
| + | ** default (xx:) - a default value to be used for any language that is not specifically listed; |
− | | + | ** language (e.g. ''ru:'') - the brand-name in the language ''ru.'' A brand might be defined in multiple languages as needed, with a single line for each language. For instance the ru: might be used to specify a brand in Cyrillic. Sometimes also country specific brands are required. |
− | Some brands can be related to different companies in different countries:
| + | ** attributes - each brand can have one or more attributes |
− | * [https://world.openfoodfacts.org/brand/san-miguel San Miguel]
| + | *** barcodeprefix:en: - the first 8(?) numbers of the barcode that belong to the brand. With this brands can be automatically assigned to a barcode. Also the barcodes of existing products can be checked; |
− | * [https://world.openfoodfacts.org/brand/star Star]
| + | *** wikipedia:en: - the full link to a page, which explains the brand(!!!). Note that brands are not well available on wikipedia; |
− | * [https://world.openfoodfacts.org/brand/walkers Walkers] seems to represent 3 different brands ([https://world.openfoodfacts.org/product/5000328123509/choux-de-bruxelle-walkers 1], [https://world.openfoodfacts.org/product/0039047003569/luxury-rich-fruit-cake-walkers 2] and [https://world.openfoodfacts.org/product/5011555031222/chocolate-gingers-walkers 3])
| + | *** wikidata:en: - the identifaction of the wikidata entry for the brand(!!). Note that brands are not well available on wikidata; |
− | | + | *** brand_owner_opencorporates:xx: - an identification of the probable brand owner/distributor on [https://opencorporates.com/ opencorporates]. It is not always clear what should be written down here. |
− | Some brands can be found in the same country but for different types of products:
| + | *** idea: local customer service address (one for each country where the product is distributed, and a generic one) |
− | * [https://world.openfoodfacts.org/brand/dove Dove], which is related to both food and beauty products
| + | *** idea: eu trademark - maybe only useful for name trademarks? (not logo's). But not relevant to the consumer. |
| + | *** idea: stores - the stores where the brand is sold. Maybe better to create a store taxonomy and link from there to brands? |
| + | ==== Example ==== |
| + | zz:laespanola<br> |
| + | xx:La Española<br> |
| + | barcodeprefix:en:8410226<br> |
| + | barcodeprefix:en:8410660<br> |
| + | category:en en:Olive tree products<br> |
| + | brand_owner_opencorporates:ES:80245129<br> |
| + | <nowiki>#</nowiki>94 products @2022-04-23<br> |
| + | <br> |
| + | zz:latrappe<br> |
| + | xx:La Trappe<br> |
| + | barcodeprefix:en:8711406<br> |
| + | category:en en:belgian-beers <br> |
| + | label:en: en:authentic-trappist-product<br> |
| + | website:nl:https://nl.latrappetrappist.com/nl/nl.html<br> |
| + | brand_owner_opencorporates:BE:0838355558<br> |
| + | wikidata:en:Q590921<br> |
| + | <nowiki>#</nowiki>11 products @2022-04-23<br> |
| | | |
− | Some brands are related to a common name or an ingredient, which can be confusing:
| + | === Q&A === |
− | * [https://world.openfoodfacts.org/brand/racines Racines] (means "roots" in French)
| |
− | * [https://world.openfoodfacts.org/brand/la-truffe La Truffe] (means "the truffle" in French)
| |
− | * [https://world.openfoodfacts.org/brand/pure-protein Pure Protein]
| |
− | * [https://world.openfoodfacts.org/brand/best-choice Best Choice] is a brand, not a tagline
| |
− | * [https://world.openfoodfacts.org/brand/great-value Great Value] also
| |
− | * [https://world.openfoodfacts.org/brand/the-belgian The Belgian], often entered <code>Belgian</code>; it produces many false positive from our AI.
| |
| | | |
− | Brands containing an apostrophe are often missing this one:
| + | * Product has more than a single brands. |
− | * [https://world.openfoodfacts.org/brand/lay-s Lay's] often written <code>Lays</code> | + | ** Product is part of a bigger brand or group. |
− | * [https://world.openfoodfacts.org/brand/kellogg-s Kellogg's] often written <code>Kelloggs</code> or something else | + | *** For [https://world.openfoodfacts.org/product/4009700036810/actimel-granatapfel example], <code>Actimel</code> is sold by <code>Danone</code>. |
− | * [https://world.openfoodfacts.org/brand/sar-ocean Sar'Ocean]. | + | *** For [https://en.wikipedia.org/wiki/Sainsbury%27s#Product_ranges example], <code>By Sainsbury's</code> is sold by <code>Sainsbury's</code>. |
− | | + | *** <u>'''Solution'''</u>: make <code>Actimel</code> a child of <code>Danone</code> in this example. |
− | Brands are changing sometimes. How to deal with that?
| + | ** Synonyms. Product is sold with 2 brands, each for different language/countries. |
− | | + | *** For [https://world.openfoodfacts.org/cgi/product.pl?type=edit&code=0065633280267 example], both <code>Nature Valley</code> and <code>Val Nature</code> can be written on the same product, but not always. |
− | === Some particular cases for a brand ===
| + | *** For [https://world.openfoodfacts.org/brand/sans-nom example], <code>No Name</code> and <code>Sans nom</code> can be written on the same product, but not always. |
− | * A brand can contain only numbers, such as <code>1664</code>, <code>1883</code> or <code>365</code>. | + | *** <u>'''Solution'''</u>: make <code>Val Nature</code> a child of <code>Nature Valley</code> in this example because <code>Nature Valley</code>is the original U.S. brand ([https://en.wikipedia.org/wiki/Nature_Valley reference]). |
− | * A brand can contain quotes, such as <code>The Muffin "Mam" Inc</code> | + | *** <u>'''Solution'''</u>: make <code>No Name</code> , <code>No Name Sans nom</code> and <code>Sans nom</code> 3 separate children of <code>Generic brand</code> in this example because they are all lines of <code>Generic brand</code>which is a Canadian brand ([https://en.wikipedia.org/wiki/No_Name_(brand) reference]). |
− | * A brand can contain &, such as <code>M&M's</code> | + | ** Also synonyms. Product brand has changed over time. |
− | * A brand can contain commas, such as <code>Williams, West & Witt's Products</code>; https://world.openfoodfacts.org/brand/williams-west-witt-s-prods | + | ** <u>'''Solution'''</u>: use synonyms in the taxonomy. |
− | * A brand can have a sub-brand containing its own name: <code>Sainsbury's</code> use a brand called [https://en.wikipedia.org/wiki/Sainsbury%27s#Product_ranges <code>By Sainsbury's</code>]. | + | * Same name shared by different brands. |
| + | ** For [https://world.openfoodfacts.org/brand/san-miguel example], <code>San Miguel</code> is a beer in Spain [cervezas san miguel], food in Mexico [grupo agroindustrial san miguel], honey in Spain/France [Ramros Trading Company]) |
| + | ** For [https://world.openfoodfacts.org/brand/star example], <code>Star</code> is starfinefood in the U.S., Star S.p.A. in Italy, stardrinks in the United Arab Emirates, star from Ghadawat Indian airlines company, |
| + | ** For [https://world.openfoodfacts.org/brand/walkers example], <code>Walkers</code> represents 3 different brands ([https://world.openfoodfacts.org/product/5000328123509/choux-de-bruxelle-walkers 1], [https://world.openfoodfacts.org/product/0039047003569/luxury-rich-fruit-cake-walkers 2] and [https://world.openfoodfacts.org/product/5011555031222/chocolate-gingers-walkers 3]) |
| + | ** For [https://world.openfoodfacts.org/brand/dove example], <code>Dove</code> is either cosmetic (from Unilever) or chocolates brand (from Mars) |
| + | ** <u>'''Solution'''</u>: having country specific brands would help as well as differencing Cervezas San Miguel and San Miguel. In long term we could have some set of rules like if it is San Miguel and category is Beers, then rename Cerezas San Miguel. Same for food vs cosmetic. |
| + | * Products without brands written. |
| + | * Brand spelling and formatting. |
| + | ** Is it <code>Coop</code>, <code>coop</code>, <code>COOP</code>, <code>CO OP</code>? |
| + | ** <u>'''Solution'''</u>: in taxonomy, there are no difference between lower and upper case, there are no difference between space and hyphen. We can make <code>coop</code> a synonym of <code>co op</code>. |
| + | ** Brands containing an apostrophe or quotes are often missing this one. |
| + | *** For examples for apostrophes, [https://world.openfoodfacts.org/brand/lay-s Lay's] vs <code>Lays</code>, [https://world.openfoodfacts.org/brand/kellogg-s Kellogg's] vs <code>Kelloggs</code>, [https://world.openfoodfacts.org/brand/sar-ocean Sar'Ocean]. |
| + | *** For example for quotes,<code>The Muffin "Mam" Inc</code> |
| + | *** <u>'''Solution'''</u>: use synonyms in the taxonomy. |
| + | ** Brands with special characters like & |
| + | *** For example for &, <code>M&M's</code> |
| + | *** <u>'''Solution'''</u>: special characters should be recognized. Eventually, use synonyms in the taxonomy. |
| + | ** Brands with commas |
| + | *** For [https://world.openfoodfacts.org/brand/williams-west-witt-s-prods example] for comma<code>Williams, West & Witt's Products</code> |
| + | *** <u>'''Solution'''</u>: brand should be written without the comma. it is not possible to use commas in the tags (if you write comma it will start a new tag, this example will result in two tags: <code>Williams</code> and <code>West & Witt's Products</code> |
| + | ** Brand with only numbers |
| + | *** For examples, <code>1664</code>, <code>1883</code> or <code>365</code>. |
| | | |
| === Some particular cases for a product === | | === Some particular cases for a product === |
| * A product can have more than 2 brands; eg: | | * A product can have more than 2 brands; eg: |
| ** Coop, in Switzerland, can add up to three brands on a product: <code>Betty Bossi</code>, <code>Karma</code> and <code>Coop</code> in [https://world.openfoodfacts.org/product/7624841023290/smokey-tofu-marroni-betty-bossi this product]; they justify it: "We offer a wide range of own-label brands and brand worlds." ([https://www.coop.ch/en/inspiration-gifts/labels/c/m_0788 source]) | | ** Coop, in Switzerland, can add up to three brands on a product: <code>Betty Bossi</code>, <code>Karma</code> and <code>Coop</code> in [https://world.openfoodfacts.org/product/7624841023290/smokey-tofu-marroni-betty-bossi this product]; they justify it: "We offer a wide range of own-label brands and brand worlds." ([https://www.coop.ch/en/inspiration-gifts/labels/c/m_0788 source]) |
− | ** In [https://world.openfoodfacts.org/product/5900497611503/peach-ice-tea-lipton this product], <code>Lipton</code> belongs to <code>Unilever</code> but this product is distributed by <code>Pepsico</code> . EDIT Lipton used to belong to Unilever, and now belong to CVC Capital Partners. Lipton's ready to drink beverages belongs to both Unilever and PepsiCo (who is distributor). | + | ** In [https://world.openfoodfacts.org/product/5900497611503/peach-ice-tea-lipton this product], <code>Lipton</code> belongs to <code>Unilever</code> but this product is distributed by <code>Pepsico</code> . EDIT Lipton used to belong to Unilever, and now belong to CVC Capital Partners. Lipton's ready to drink beverages belongs to both Unilever and PepsiCo (who is distributor). |
| | | |
| === Implementation in Open Food Facts === | | === Implementation in Open Food Facts === |
Line 53: |
Line 85: |
| | | |
| See [https://github.com/openfoodfacts/openfoodfacts-server/issues?q=is%3Aissue+is%3Aopen+ingredients+label%3Abrands issues related to <code>brands</code>]. | | See [https://github.com/openfoodfacts/openfoodfacts-server/issues?q=is%3Aissue+is%3Aopen+ingredients+label%3Abrands issues related to <code>brands</code>]. |
− | | + | * |
− | Preventing OFF AI to detect some false brands: see [https://github.com/openfoodfacts/robotoff/blob/master/data/ocr/brand_taxonomy_blacklist.txt brand_taxonomy_blacklist.txt].
| |
− | | |
− | === Help to collect brands ===
| |
− | The IA of Open Food Facts, called [[Artificial Intelligence|Robotoff]], is trying to identify brands. The annotations made by Robotoff are provided to users, asking them to answer to a simple question. There are also used by [https://hunger.openfoodfacts.org/questions?type=brand Hunger Game]. Everyone can use Hunger Game, but be careful to the issues mentioned in this current page.
| |
− | * on 2020-10-29, there were 43200 annotations and 22748 resting | |
− | * on 2020-11-17, there were 46911 annotations and 22720 resting
| |
| | | |
| === Observations summary === | | === Observations summary === |
Line 88: |
Line 114: |
| # Language/script specific brands - a way to code a single brand in multiple scripts and/or languages, for example in Chinese, Arabic and English (UC1) | | # Language/script specific brands - a way to code a single brand in multiple scripts and/or languages, for example in Chinese, Arabic and English (UC1) |
| # Language independent brand - a way to encode a brand that is valid for multiple languages (UC1); | | # Language independent brand - a way to encode a brand that is valid for multiple languages (UC1); |
− |
| |
− | == Taxonomy encoding ==
| |
− | Taking the observations, use cases and design considerations into account, it is possible to specify how this can be encoded in a taxonomy. The same approach as all the other taxonomies will be used for thus.
| |
− |
| |
− | An overview of the encoding used in the brands taxonomy:
| |
− | * blocks/white lines - a single brand is defined by a block of text and are separated by white lines;
| |
− | * definition - a single line defines the brand in a specific language, an attribute, etc. Each line starts with a name followed by parameters and separated by a colon
| |
− | * parameters:
| |
− | ** parent (<zz:) - a reference to another (parent) brand. Thus any attributes shared between parent and child only have to be specified in the parent;
| |
− | ** key (''zz:'') - an unique is required, so that we can distinguish between brands with the same name;
| |
− | ** default (xx:) - a default value to be used for any language that is not specifically listed;
| |
− | ** language (e.g. ''ru:'') - the brand-name in the language ''ru.'' A brand might be defined in multiple languages as needed, with a single line for each language. For instance the ru: might be used to specify a brand in Cyrillic. Sometimes also country specific brands are required.
| |
− | ** attributes - each brand can have one or more attributes
| |
− | *** barcodeprefix:en: - the first 8(?) numbers of the barcode that belong to the brand. With this brands can be automatically assigned to a barcode. Also the barcodes of existing products can be checked;
| |
− | *** wikipedia:en: - the full link to a page, which explains the brand(!!!). Note that brands are not well available on wikipedia;
| |
− | *** wikidata:en: - the identifaction of the wikidata entry for the brand(!!). Note that brands are not well available on wikidata;
| |
− | *** brand_owner_opencorporates:xx: - an identification of the probable brand owner/distributor on [https://opencorporates.com/ opencorporates]. It is not always clear what should be written down here.
| |
− | *** idea: local customer service address (one for each country where the product is distributed, and a generic one)
| |
− | *** idea: eu trademark - maybe only useful for name trademarks? (not logo's). But not relevant to the consumer.
| |
− | *** idea: stores - the stores where the brand is sold. Maybe better to create a store taxonomy and link from there to brands?
| |
− | === Example ===
| |
− | zz:laespanola<br>
| |
− | xx:La Española<br>
| |
− | barcodeprefix:en:8410226<br>
| |
− | barcodeprefix:en:8410660<br>
| |
− | category:en en:Olive tree products<br>
| |
− | brand_owner_opencorporates:ES:80245129<br>
| |
− | <nowiki>#</nowiki>94 products @2022-04-23<br>
| |
− | <br>
| |
− | zz:latrappe<br>
| |
− | xx:La Trappe<br>
| |
− | barcodeprefix:en:8711406<br>
| |
− | category:en en:belgian-beers <br>
| |
− | label:en: en:authentic-trappist-product<br>
| |
− | website:nl:https://nl.latrappetrappist.com/nl/nl.html<br>
| |
− | brand_owner_opencorporates:BE:0838355558<br>
| |
− | wikidata:en:Q590921<br>
| |
− | <nowiki>#</nowiki>11 products @2022-04-23<br>
| |
| | | |
| == Questions / Issues == | | == Questions / Issues == |
Line 132: |
Line 120: |
| * parent brand - when should the parent brand be added? Only if the parent brand is available on the front of the packaging, or also when it is shown on the back of the packaging, or when we can find out the legal final parent owner of a brand? This choice might have an implication for how we structure the data. | | * parent brand - when should the parent brand be added? Only if the parent brand is available on the front of the packaging, or also when it is shown on the back of the packaging, or when we can find out the legal final parent owner of a brand? This choice might have an implication for how we structure the data. |
| * EAN manufacturer codes - is there an open database which we could use? | | * EAN manufacturer codes - is there an open database which we could use? |
| + | |
| + | === Brands and Robotoff (AI) === |
| + | Preventing OFF AI to detect some false brands: see [https://github.com/openfoodfacts/robotoff/blob/master/data/ocr/brand_taxonomy_blacklist.txt brand_taxonomy_blacklist.txt]. |
| + | |
| + | ==== Help to collect brands ==== |
| + | The AI of Open Food Facts, called [[Artificial Intelligence|Robotoff]], is trying to identify brands. The annotations made by Robotoff are provided to users, asking them to answer to a simple question. There are also used by [https://hunger.openfoodfacts.org/questions?type=brand Hunger Game]. Everyone can use Hunger Game, but be careful to the issues mentioned in this current page. |
| + | * on 2020-10-29, there were 43200 annotations and 22748 resting |
| + | * on 2020-11-17, there were 46911 annotations and 22720 resting |
| + | |
| + | ==== Know challenges ==== |
| + | Some brand names are related to common name, expressions or ingredients producing false positive with AI tool. For examples: |
| + | |
| + | * [https://world.openfoodfacts.org/brand/racines Racines] (means "roots" in French) |
| + | *[https://world.openfoodfacts.org/brand/la-truffe La Truffe] (means "the truffle" in French) |
| + | *[https://world.openfoodfacts.org/brand/pure-protein Pure Protein] |
| + | *[https://world.openfoodfacts.org/brand/best-choice Best Choice] is a brand, not a tagline |
| + | *[https://world.openfoodfacts.org/brand/great-value Great Value] also |
| + | *[https://world.openfoodfacts.org/brand/the-belgian The Belgian], often entered <code>Belgian</code>; it produces many false positive from our AI. |