Sdílet prostřednictvím


Hashování funkcí

Důležité

Podpora studia Machine Learning (Classic) skončí 31. srpna 2024. Doporučujeme do tohoto data přejít na službu Azure Machine Learning.

Od 1. prosince 2021 nebude možné vytvářet nové prostředky studia Machine Learning (Classic). Do 31. srpna 2024 můžete pokračovat v používání stávajících prostředků studia Machine Learning (Classic).

Dokumentace ke studiu ML (Classic) se vyřazuje z provozu a v budoucnu se nemusí aktualizovat.

Převede textová data na celočíselné funkce pomocí knihovny Vowpal Wabbit.

Kategorie: Analýza textu

Poznámka

Platí pro: pouze Machine Learning Studio (classic)

Podobné moduly pro přetažení jsou dostupné v návrháři Azure Machine Learning.

Přehled modulu

Tento článek popisuje, jak pomocí modulu hashování funkcí v Machine Learning Studiu (classic) transformovat datový proud anglického textu na sadu funkcí reprezentovaných jako celá čísla. Tuto hashovanou funkci pak můžete předat algoritmus strojového učení pro trénování modelu analýzy textu.

Funkce hash funkcí poskytovaná v tomto modulu je založená na rozhraní Vowpal Wabbit. Další informace naleznete v tématu Trénování Vowpal Wabbit 7-4 Model nebo Trénování Vowpal Wabbit 7-10 Model.

Další informace o hashování funkcí

Hashování funkcí funguje převodem jedinečných tokenů na celá čísla. Pracuje s přesnými řetězci, které zadáte jako vstup, a neprovádí žádnou jazykovou analýzu ani předběžné zpracování.

Můžete například použít sadu jednoduchých vět, jako jsou ty, a pak skóre mínění. Předpokládejme, že chcete tento text použít k vytvoření modelu.

USERTEXT SENTIMENT
Miloval(a) jsem tuto knihu 3
Nenávidím tuto knihu 1
Tato kniha byla skvělá 3
Miluju knihy 2

Modul hashování funkcí interně vytvoří slovník n-gramů. Seznam bigramů pro tuto datovou sadu by například vypadal takto:

TERM (bigrams) FREKVENCE
Tato kniha 3
Miloval jsem 1
Nelíbí se mi 1
Miluju 1

Velikost n-gramů můžete řídit pomocí vlastnosti N-gram . Pokud zvolíte bigramy, vypočítávají se také unigramy. Slovník by tedy obsahoval také jednoduché termíny, jako jsou tyto:

Termín (unigramy) FREKVENCE
Kniha 3
I 3
books 1
Byl 1

Po sestavení slovníku modul hashování funkcí převede termíny slovníku na hodnoty hash a vypočítá, jestli se v každém případě použila funkce. Pro každý řádek textových dat modul vypíše sadu sloupců, jeden sloupec pro každou funkci hash.

Například po hashování můžou sloupce funkcí vypadat přibližně takto:

Rating Funkce hash 1 Funkce hash 2 Funkce hashování 3
4 1 1 0
5 0 0 0
  • Pokud je hodnota ve sloupci 0, řádek neobsahuje hashovanou funkci.
  • Pokud je hodnota 1, řádek obsahoval funkci.

Výhodou použití hashování funkcí je, že můžete představovat textové dokumenty s proměnnou délkou jako číselné vektory funkcí stejné délky a dosáhnout redukce rozměrnosti. Naproti tomu pokud jste se pokusili použít textový sloupec pro trénování tak, jak je, bude považován za sloupec funkce kategorií s mnoha různými hodnotami.

Výstupy jako číselné také umožňují používat mnoho různých metod strojového učení s daty, včetně klasifikace, clusteringu nebo načítání informací. Vzhledem k tomu, že vyhledávací operace můžou místo porovnání řetězců používat celočíselné hodnoty hash, je získání váhy funkcí také mnohem rychlejší.

Konfigurace hashování funkcí

  1. Přidejte modul hashování funkcí do experimentu v sadě Studio (classic).

  2. Připojení datovou sadu obsahující text, který chcete analyzovat.

    Tip

    Vzhledem k tomu, že hashování funkcí neprovádí lexikální operace, jako je stemming nebo zkrácení, můžete někdy získat lepší výsledky tím, že před použitím hodnoty hash funkce provedete předběžné zpracování textu. Návrhy najdete v částech Osvědčené postupy a Technické poznámky .

  3. U cílových sloupců vyberte tyto textové sloupce, které chcete převést na funkce hash.

    • Sloupce musí být datový typ řetězce a musí být označeny jako sloupec Funkce .

    • Pokud zvolíte více textových sloupců, které se mají použít jako vstupy, může mít obrovský vliv na rozměrnost funkcí. Pokud se například pro jeden textový sloupec používá 10bitová hodnota hash, výstup obsahuje 1024 sloupců. Pokud se pro dva textové sloupce používá 10bitová hodnota hash, výstup obsahuje 2048 sloupců.

    Poznámka

    Studio (classic) standardně označí většinu textových sloupců jako funkce, takže pokud vyberete všechny textové sloupce, můžete získat příliš mnoho sloupců, včetně mnoha, které nejsou ve skutečnosti volný text. Pokud chcete zabránit v hashování jiných textových sloupců, použijte možnost Vymazat funkci v části Upravit metadata .

  4. Pomocí bitů hash určete počet bitů, které se mají použít při vytváření tabulky hash.

    Výchozí bitová velikost je 10. U mnoha problémů je tato hodnota větší než odpovídající, ale to, jestli pro vaše data stačí, závisí na velikosti slovníku n-gram v trénovacím textu. S velkým slovníkem může být potřeba více místa, aby nedocházelo ke kolizím.

    Doporučujeme pro tento parametr použít jiný počet bitů a vyhodnotit výkon řešení strojového učení.

  5. U N-gramů zadejte číslo, které definuje maximální délku n-gramů, které se mají přidat do trénovacího slovníku. N-gram je posloupnost n slov, která se považuje za jedinečnou jednotku.

    • N-gramy = 1: Unigramy nebo jednosloví.

    • N-gramy = 2: Bigrams nebo dvouslovné sekvence, plus unigramy.

    • N-gramy = 3: Trigramy nebo tříslovné sekvence, plus bigramy a unigramy.

  6. Spusťte experiment.

Výsledky

Po dokončení zpracování modul vypíše transformovanou datovou sadu, ve které byl původní textový sloupec převeden na více sloupců, přičemž každý představuje funkci v textu. V závislosti na velikosti slovníku může být výsledná datová sada extrémně velká:

Název sloupce 1 Typ sloupce 2
USERTEXT Původní datový sloupec
SENTIMENT Původní datový sloupec
USERTEXT – funkce hash 1 Sloupec hashované funkce
USERTEXT – funkce hashování 2 Sloupec hashované funkce
USERTEXT – funkce hashování n Sloupec hashované funkce
USERTEXT – funkce hashování 1024 Sloupec hashované funkce

Po vytvoření transformované datové sady ji můžete použít jako vstup do modulu Trénování modelu společně s dobrým klasifikačním modelem, jako je například dvoutřídní vektorový vektor.

Osvědčené postupy

Některé osvědčené postupy, které můžete použít při modelování textových dat, jsou znázorněny v následujícím diagramu představujícím experiment.

AML_FeatureHashingWorkflow

  • Před použitím funkce hashingu možná budete muset přidat modul Execute R Script, aby bylo možné předzpracovat vstupní text. Pomocí skriptu jazyka R máte také flexibilitu používat vlastní slovníky nebo vlastní transformace.

  • Za modul hashování funkcí byste měli přidat modul Vybrat sloupce v datové sadě, abyste odebrali textové sloupce z výstupní datové sady. Po vygenerování funkcí hash nepotřebujete textové sloupce.

    Případně můžete pomocí modulu Upravit metadata vymazat atribut funkce z textového sloupce.

Zvažte také použití těchto možností předběžného zpracování textu, abyste zjednodušily výsledky a zlepšily přesnost:

  • rozbití slov
  • zastavit odebrání slova
  • normalizace velkých písmen
  • odebrání interpunkce a speciálních znaků
  • Vyplývající.

Optimální sada metod předběžného zpracování, které se mají použít v jakémkoli individuálním řešení, závisí na doméně, slovníku a obchodní potřebě. Doporučujeme experimentovat s daty, abyste zjistili, které vlastní metody zpracování textu jsou nejúčinnější.

Příklady

Příklady použití hash funkcí pro analýzu textu najdete v galerii Azure AI:

  • Kategorizace zpráv: Pomocí hash funkcí klasifikuje články do předdefinovaného seznamu kategorií.

  • Podobné společnosti: Používá text článků Wikipedie k kategorizaci společností.

  • Klasifikace textu: Tato pětidílná ukázka používá k analýze mínění text ze zpráv Twitteru.

Technické poznámky

Tato část obsahuje podrobnosti o implementaci, tipy a odpovědi na nejčastější dotazy.

Tip

Kromě použití hashování funkcí můžete chtít k extrakci funkcí z textu použít i jiné metody. Příklad:

  • Pomocí modulu Preprocess Text můžete odebrat artefakty, jako jsou pravopisné chyby, nebo zjednodušit přípravu textu na hashování.
  • Extrakce klíčových frází slouží k extrakci frází pomocí zpracování přirozeného jazyka.
  • Rozpoznávání pojmenovaných entit slouží k identifikaci důležitých entit.

Machine Learning Studio (classic) poskytuje šablonu klasifikace textu, která vás provede pomocí modulu hashování funkcí pro extrakci funkcí.

Podrobnosti o implementaci

Modul hashování funkcí používá architekturu rychlého strojového učení s názvem Vowpal Wabbit, která hashuje slova do indexů v paměti pomocí oblíbené funkce hash open source označované jako murmurhash3. Tato funkce hash je nešifrovaný algoritmus hash, který mapuje textové vstupy na celá čísla a je oblíbený, protože funguje dobře v náhodném rozdělení klíčů. Na rozdíl od kryptografických hash funkcí může nežádoucí osoba snadno převrátit, aby byla nevhodná pro kryptografické účely.

Účelem hashování je převést textové dokumenty s proměnnou délkou na vektory číselných funkcí stejné délky, podporovat redukci dimenzí a zrychlit vyhledávání hmotností funkcí.

Každá funkce hash představuje jeden nebo více n-gram textových funkcí (jednogramy nebo jednotlivá slova, bi-gramy, tri gramy atd.), v závislosti na počtu bitů (reprezentovaných jako k) a počtu n-gramů zadaných jako parametry. Projektuje názvy funkcí pro nepodepsané slovo architektury počítače pomocí algoritmu murmurhash v3 (pouze 32bitová verze), který pak je AND-ed s (2^k)-1. To znamená, že hodnota hash je promítána dolů na první k bity s nižším pořadím a zbývající bity se vynulují. Pokud je zadaný počet bitů 14, může tabulka hash obsahovat 214-1 (nebo 16 383) položek.

U mnoha problémů je výchozí tabulka hash (bitsize = 10) větší než odpovídající; V závislosti na velikosti slovníku n-gramů v trénovacím textu však může být potřeba více místa, aby nedocházelo ke kolizím. Doporučujeme vyzkoušet použití jiného počtu bitů pro parametr hashování bitů a vyhodnotit výkon řešení strojového učení.

Očekávané vstupy

Název Typ Description
Datová sada Tabulka dat Vstupní datová sada

Parametry modulu

Name Rozsah Typ Výchozí Description
Cílové sloupce Všechny ColumnSelection StringFeature Zvolte sloupce, u kterých se použije hashování.
Hashing bitsize [1;31] Integer 10 Zadejte početbitch
N-gramy [0;10] Integer 2 Zadejte počet N-gramů vygenerovaných během hashování. Ve výchozím nastavení se extrahují unigramy i bigramy.

Výstupy

Název Typ Description
Transformovaná datová sada Tabulka dat Výstupní datová sada s hashovanými sloupci

Výjimky

Výjimka Description
Chyba 0001 K výjimce dochází v případě, že se nepodařilo najít jeden nebo více zadaných sloupců datové sady.
Chyba 0003 K výjimce dochází v případě, že jeden nebo více vstupů má hodnotu null nebo je prázdné.
Chyba 0004 K výjimce dochází, pokud je parametr menší nebo roven určité hodnotě.
Chyba 0017 K výjimce dochází v případě, že jeden nebo více zadaných sloupců má typ nepodporovaný aktuálním modulem.

Seznam chyb specifických pro moduly Studio (Classic) najdete v tématu Machine Learning kódy chyb.

Seznam výjimek rozhraní API najdete v tématu Machine Learning kódy chyb rozhraní REST API.

Viz také

Analýza textu

Seznam modulů A-Z