Programování

8 skvělých knihoven Pythonu pro zpracování přirozeného jazyka

Zpracování přirozeného jazyka, nebo zkráceně NLP, lze nejlépe popsat jako „AI pro řeč a text“. Kouzlo za hlasovými příkazy, překladem řeči a textu, analýzou sentimentu, shrnutím textu a mnoha dalšími lingvistickými aplikacemi a analýzami bylo zpracování přirozeného jazyka dramaticky vylepšeno díky hlubokému učení.

Jazyk Python poskytuje pohodlné rozhraní pro všechny druhy strojového učení včetně NLP. Ve skutečnosti existuje v rozpacích bohatství NLP, ze kterého si můžete v ekosystému Pythonu vybrat. V tomto článku prozkoumáme každou z knihoven NLP dostupných pro Python - jejich případy použití, jejich silné stránky, jejich slabosti a jejich obecnou úroveň popularity.

Všimněte si, že některé z těchto knihoven poskytují vyšší verze stejné funkce vystavené ostatními, což usnadňuje použití této funkce za cenu určité přesnosti nebo výkonu. Budete si chtít vybrat knihovnu vhodnou jak pro vaši úroveň odbornosti, tak pro povahu projektu.

CoreNLP

Knihovna CoreNLP - produkt Stanfordské univerzity - byla vytvořena jako řešení pro zpracování přirozeného jazyka připravené na produkci, schopné poskytovat předpovědi a analýzy NLP v měřítku. CoreNLP je napsán v jazyce Java, ale je pro něj k dispozici několik balíčků a rozhraní API Pythonu, včetně nativní knihovny Python NLP s názvem StanfordNLP.

CoreNLP zahrnuje širokou škálu jazykových nástrojů - označování gramatiky, rozpoznávání pojmenovaných entit, syntaktická analýza, analýza sentimentu a mnoho dalšího. Byl navržen tak, aby byl agnostický v lidském jazyce, a v současné době podporuje kromě angličtiny také arabštinu, čínštinu, francouzštinu, němčinu a španělštinu (s ruskou, švédskou a dánskou podporou od třetích stran). CoreNLP také obsahuje server webového API, což je pohodlný způsob, jak poskytovat předpovědi bez přílišné další práce.

Nejjednodušší místo, kde začít s obaly Python CoreNLP, je StanfordNLP, referenční implementace vytvořená skupinou Stanford NLP Group. Kromě řádného zdokumentování je StanfordNLP také pravidelně udržován; mnoho dalších knihoven Pythonu pro CoreNLP nebylo v nějaké době aktualizováno.

CoreNLP také podporuje použití NLTK, hlavní knihovny Python NLP popsané níže. Od verze 3.2.3 obsahuje NLTK ve svém analyzátoru rozhraní k CoreNLP. Nezapomeňte použít správné API.

Zjevnou nevýhodou CoreNLP je, že k uvedení do provozu budete potřebovat určité znalosti jazyka Java, ale to není nic, čeho by pozorné přečtení dokumentace nemohlo dosáhnout. Další překážkou může být licencování CoreNLP. Celá sada nástrojů je licencována na základě GPLv3, což znamená, že jakékoli použití v proprietárním softwaru, který distribuujete ostatním, bude vyžadovat komerční licenci.

Gensim

Gensim dělá jen dvě věci, ale dělá je mimořádně dobře. Zaměřuje se na statistickou sémantiku - analyzuje strukturu dokumentů a poté vyhodnocuje další dokumenty na základě jejich podobnosti.

Gensim může pracovat s velmi velkými těly textu streamováním dokumentů do svého analytického stroje a postupným prováděním bezobslužného učení. Může vytvořit několik typů modelů, každý vhodný pro různé scénáře: Word2Vec, Doc2Vec, FastText a Latent Dirichlet Allocation.

Podrobná dokumentace společnosti Gensim obsahuje výukové programy a návody, které vysvětlují klíčové koncepty a ilustrují je praktickými příklady. Běžné recepty jsou k dispozici také v repozitáři Gensim GitHub.

NLTK

Sada Natural Language Toolkit, zkráceně NLTK, patří mezi nejznámější a nejmocnější knihovny zpracování přirozeného jazyka v Pythonu. Mnoho korpusů (datových sad) a trénovaných modelů je k dispozici pro použití s ​​NLTK ihned po vybalení, takže můžete začít experimentovat s NLTK hned.

Jak uvádí dokumentace, NLTK poskytuje širokou škálu nástrojů pro práci s textem: „klasifikace, tokenizace, odvozování, značkování, analýza a sémantické uvažování.“ Může také pracovat s některými nástroji třetích stran, aby vylepšil svou funkčnost.

Mějte na paměti, že NLTK bylo vytvořeno pro akademické výzkumné publikum a pro něj. Nebyl navržen tak, aby sloužil modelům NLP v produkčním prostředí. Dokumentace je také poněkud řídká; dokonce i návody jsou tenké. Také neexistuje žádný 64bitový binární soubor; pro jeho použití si musíte nainstalovat 32bitovou verzi Pythonu. A konečně, NLTK není ani nejrychlejší knihovnou, ale může být urychlena paralelním zpracováním.

Pokud jste odhodláni využít toho, co je uvnitř NLTK, můžete místo toho začít s TextBlob (popsáno níže).

Vzor

Pokud vše, co musíte udělat, je seškrábnout oblíbený web a analyzovat, co najdete, sáhněte po vzoru. Tato knihovna pro zpracování přirozeného jazyka je mnohem menší a užší než jiné zde uvedené knihovny, ale to také znamená, že je zaměřena na to, aby jedna společná práce byla opravdu dobrá.

Pattern je dodáván s integrovanými funkcemi pro škrábání řady populárních webových služeb a zdrojů (Google, Wikipedia, Twitter, Facebook, obecné RSS atd.), Které jsou k dispozici jako moduly Pythonu (např. z importu vzorů. web Twitter). Nemusíte znovu objevovat kolečka pro získávání dat z těchto webů se všemi jejich zvláštními zvláštnostmi. Poté můžete s daty provést řadu běžných operací NLP, například analýzu sentimentu.

Pattern odhaluje některé ze svých funkcí na nižší úrovni, což vám umožňuje přímo používat funkce NLP, vyhledávání n-gramů, vektory a grafy. Má také vestavěnou pomocnou knihovnu pro práci s běžnými databázemi (MySQL, SQLite a MongoDB v budoucnu), což usnadňuje práci s tabulkovými daty uloženými z předchozích relací nebo získanými od třetích stran.

Polyglot

Polyglot, jak název napovídá, umožňuje aplikace pro zpracování přirozeného jazyka, které se zabývají více jazyky najednou.

Funkce NLP v Polyglotu odrážejí to, co se nachází v jiných knihovnách NLP: tokenizace, rozpoznávání pojmenovaných entit, tagování řeči, analýza sentimentu, vkládání slov atd. Pro každou z těchto operací Polyglot poskytuje modely, které pracují s potřebnými jazyky.

Pamatujte, že jazyková podpora Polyglot se u jednotlivých funkcí velmi liší. Například tokenizační systém podporuje téměř 200 jazyků (hlavně proto, že používá algoritmus Unicode Text Segmentation) a analýza sentimentu podporuje 136 jazyků, ale značení části řeči podporuje pouze 16.

PyNLPI

PyNLPI (vyslovuje se jako „ananas“) má pouze základní seznam funkcí zpracování přirozeného jazyka, ale má některé skutečně užitečné funkce pro převod dat a zpracování dat pro datové formáty NLP.

Většina funkcí NLP v PyNLPI je pro základní úlohy, jako je tokenizace nebo extrakce n-gramů, spolu s některými statistickými funkcemi užitečnými v NLP, jako je Levenshteinova vzdálenost mezi řetězci nebo Markovovy řetězce. Tyto funkce jsou pro pohodlí implementovány v čistém Pythonu, takže je nepravděpodobné, že budou mít výkon na úrovni výroby.

PyNLPI ale svítí pro práci s některými exotičtějšími datovými typy a formáty, které se objevily v prostoru NLP. PyNLPI umí číst a zpracovávat datové formáty GIZA, Moses ++, SoNaR, Taggerdata a TiMBL a věnuje celý modul práci s FoLiA, formátem dokumentu XML používaným k anotaci jazykových zdrojů, jako jsou korpusy (těla textu používaná k překladu nebo jiné analýze) .

Po práci s těmito datovými typy budete chtít sáhnout po PyNLPI.

SpaCy

SpaCy, který využívá Python pro pohodlí a Cython pro rychlost, je účtován jako „průmyslové zpracování přirozeného jazyka.“ Jeho tvůrci tvrdí, že je příznivě srovnatelný s NLTK, CoreNLP a dalšími konkurenty, pokud jde o rychlost, velikost modelu a přesnost. Hlavní nevýhodou SpaCy je, že je relativně nová, takže pokrývá pouze angličtinu a několik dalších (hlavně evropských) jazyků. To znamená, že SpaCy již od tohoto psaní dosáhla verze 2.2.

SpaCy zahrnuje většinu všech funkcí nalezených v těchto konkurenčních rámcích: tagování řeči, analýza závislostí, rozpoznávání pojmenovaných entit, tokenizace, segmentace vět, operace shody založené na pravidlech, slovní vektory a spousta dalších. SpaCy také zahrnuje optimalizace pro operace GPU - jak pro zrychlení výpočtu, tak pro ukládání dat na GPU, aby se zabránilo kopírování.

Prostorná dokumentace je vynikající. Průvodce instalací generuje akce instalace příkazového řádku pro Windows, Linux a macOS a také pro různá prostředí Pythonu (pip, conda atd.). Jazykové modely se instalují jako balíčky Pythonu, takže je lze sledovat jako součást seznamu závislostí aplikace.

TextBlob

TextBlob je přátelský front-end knihoven Pattern a NLTK, který oba tyto knihovny zabalí do snadno použitelných rozhraní na vysoké úrovni. S TextBlob strávíte méně času bojováním se složitostmi Pattern a NLTK a více času získáváním výsledků.

TextBlob vyhlazuje cestu využitím nativních objektů a syntaxe Pythonu. Příklady rychlého startu ukazují, jak se s texty, které mají být zpracovány, zachází jednoduše jako s řetězci a běžné metody NLP, jako je značkování části řeči, jsou k dispozici jako metody na těchto řetězcových objektech.

Další výhodou TextBlob je, že můžete „zvednout kapotu“ a měnit její funkčnost, jak budete mít větší jistotu. Mnoho výchozích komponent, jako je systém analýzy sentimentu nebo tokenizer, lze podle potřeby vyměnit. Můžete také vytvořit objekty na vysoké úrovni, které kombinují komponenty - tento analyzátor sentimentu, tento klasifikátor atd. - a znovu je používat s minimálním úsilím. Tímto způsobem můžete něco rychle prototypovat pomocí TextBlob a poté to vylepšit později.

$config[zx-auto] not found$config[zx-overlay] not found