Tokenizacja

Jan 10 2023
Co to jest tokenizacja? W skrócie dzieli teksty na słowa lub zdania… Tutaj zajmiemy się różnymi tokenizerami, których możemy użyć w NLP ……… 2. Specyficzny podział To samo co biała spacja, ale tutaj dajemy podział dowolnego rozdzielacza, jaki chcemy 3.

Co to jest tokenizacja? Krótko mówiąc, dzieli teksty na słowa lub zdania…

Tokenizacja

Tutaj zajmiemy się różnymi tokenizerami, których możemy użyć w NLP ………

  1. Biała przestrzeń

text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']

2. Specyficzny podział

To samo co biała spacja, ale tutaj dajemy splitdowolny rozdzielacz

text = 'Egypt, a country linking northeast Africa with the Middle East, dates to the time of the pharaohs.'
print(text.split(','))
# output
# ['Egypt', ' a country linking northeast Africa with the Middle East', ' dates to the time of the pharaohs.']

3. NLTK

NLTK to wiodąca platforma do tworzenia programów w języku Python do pracy z danymi w języku ludzkim. Istnieje wiele tokenizerów, których możemy użyć

l) word_toknizer: Rozwiązuje problem w funkcji podziału:

word_toknizer: patrz Żółty znak powyżej

ll) sent_tokenize: Używa podzielonego tekstu jako modeli, które trenował wcześniej.

sent_tokenize: to jest mój cytat, który został podzielony na cytat i moje imię

lll) wordpunct_tokenize: Tutaj rozdziela wszystkie słowa i znaki interpunkcyjne.

wordpunct_tokenize: daje nam znak, że ma wszystkie słowa i znaki interpunkcyjne

lV) TreebankWordTokenizer: Dzieli tekst, podobnie jak te znaki interpunkcyjne ?!.,;, z drugiej strony jest to wiele wspólnych zasad dla angielskich słów.

TreebankWordTokenizer: zobacz żółty znak powyżej, będziesz wiedział, że to moje imię, więc widzi to jako token

V) TweetTokenizer: Dzieli tekst na te znaki interpunkcyjne ?!.,;, czyli emotikony

TweetTokenizer

Vl) MWETokenizer: Tutaj możemy dodać token tak, jak chcemy, ponieważ ten tokenizer add_mwepozwala nam to zrobić

MWETokenizer: dodaliśmy token, jak widzimy w wyniku, zobaczysz ten token

4. TextBlob

TextBlob to biblioteka Pythona (2 i 3) do przetwarzania danych tekstowych . Zapewnia prosty interfejs API do wykonywania typowych zadań przetwarzania języka naturalnego (NLP), takich jak oznaczanie części mowy, wyodrębnianie fraz rzeczownikowych, analiza tonacji, klasyfikacja, tłumaczenie i nie tylko.

from textblob import TextBlob
text="""But I'm glad you'll see me as I am. Above all, I wouldn't want people to think that I want to 
prove anything. I don't want to prove anything, I just want to live; to cause no evil to anyone but myself. 
I have that right, haven't I? Leo Tolstoy """

blob_object= TextBlob(text)     # Word tokenization of  the text
text_words = blob_object.words  # To see all tokens
print(text_words)  # To count the number of tokens
print(len(text_words))

# output
# ['But', 'I', "'m", 'glad', 'you', "'ll", 'see', 'me', 'as', 'I', 'am', 'Above', 'all', 'I', 'would', "n't", 'want', 'people', 'to', 'think', 'that', 'I', 'want', 'to', 'prove', 'anything', 'I', 'do', "n't", 'want', 'to', 'prove', 'anything', 'I', 'just', 'want', 'to', 'live', 'to', 'cause', 'no', 'evil', 'to', 'anyone', 'but', 'myself', 'I', 'have', 'that', 'right', 'have', "n't", 'I', 'Leo', 'Tolstoy']
# 55

5. przestronny

spaCy to bezpłatna biblioteka typu open source do przetwarzania języka naturalnego w Pythonie . Zawiera NER, tagowanie POS, analizowanie zależności, wektory słów i wiele więcej.

Daje nam token i jego indeks wszystkie słowa, znaki interpunkcyjne i emotikony

6. Pokolenie

Gensim: Jest to biblioteka typu open source w Pythonie napisana przez Radima Rehurka, która jest używana w nienadzorowanym modelowaniu tematów i przetwarzaniu języka naturalnego . Jest przeznaczony do wyodrębniania tematów semantycznych z dokumentów. Może obsługiwać duże zbiory tekstu.

tutaj usuwa wszystkie znaki interpunkcyjne i emotikony

7. Keras

Keras to biblioteka typu open source, która jest jednym z najbardziej niezawodnych frameworków do głębokiego uczenia się. Do wykonania tokenizacji wykorzystujemy: metodę text_to_word_sequence z klasy Keras.preprocessing.text. Wspaniałą rzeczą w Keras jest konwersja alfabetu małymi literami przed jego tokenizacją, co może zaoszczędzić sporo czasu.

from keras.preprocessing.text import Tokenizer
from keras.preprocessing.text import text_to_word_sequence

text = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.  #Albert Einstein"


tokinzer = Tokenizer(num_words=20)  # as recommended we put here the max text length we have
tokinzer.fit_on_texts(text)
tokens = text_to_word_sequence(text)
print(tokens)

# output
# ['two', 'things', 'are', 'infinite', 'the', 'universe', 'and', 'human', 'stupidity', 'and', "i'm", 'not', 'sure', 'about', 'the', 'universe', '', 'albert', 'einstein']

8. Tokenizacja oparta na podsłowach

Popularną tokenizacją jest tokenizacja oparta na słowach podrzędnych, która jest rozwiązaniem pomiędzy tokenizacją opartą na słowach i znakach. Główną ideą jest rozwiązanie problemów, z którymi boryka się tokenizacja oparta na słowach (bardzo duży rozmiar słownictwa, duża liczba tokenów OOV i różne znaczenia bardzo podobnych słów) oraz tokenizacja oparta na znakach (bardzo długie sekwencje i mniej znaczące pojedyncze tokeny).

Algorytmy tokenizacji oparte na słowach podrzędnych wykorzystują następujące zasady.

  1. Nie dziel często używanych słów na mniejsze podsłowa.
  2. Podziel rzadkie słowa na mniejsze, znaczące słowa podrzędne.

Wyzwania

Omówmy wyzwania i ograniczenia zadania tokenizacji.

Ogólnie rzecz biorąc, to zadanie jest używane w przypadku korpusów tekstowych napisanych w języku angielskim lub francuskim, w których te języki oddzielają słowa za pomocą białych spacji lub znaków interpunkcyjnych w celu określenia granic zdań. Niestety, tej metody nie można było zastosować w innych językach, takich jak chiński, japoński, koreański tajski, hindi, urdu, tamilski i inne. Ten problem stwarza potrzebę opracowania wspólnego narzędzia tokenizacji, które łączy wszystkie języki.

Kolejnym ograniczeniem jest tokenizacja tekstów arabskich, ponieważ arabski ma skomplikowaną morfologię jako język. Na przykład pojedyncze słowo arabskie może zawierać do sześciu różnych tokenów, takich jak słowo „عقد” (eaqad).

te same znaki, ale mają różne znaczenia

Wniosek

Rozmawialiśmy o tokenizacji i wielu technikach, które możemy wykorzystać, ponieważ widzimy, że istnieje wiele rodzajów badań w tej dziedzinie i rozwija się i istnieje wiele wyzwań stojących przed NLP, ale zobaczymy, jak w przyszłości te problemy zostaną rozwiązane.

możesz zobaczyć kod w tym linku