Gensim - Dokumenty i korpus

Tutaj dowiemy się o podstawowych koncepcjach Gensim, ze szczególnym uwzględnieniem dokumentów i korpusu.

Podstawowe pojęcia Gensim

Poniżej przedstawiono podstawowe pojęcia i terminy potrzebne do zrozumienia i używania Gensim -

  • Document - Z To odnosi się do jakiegoś tekstu.

  • Corpus - Odnosi się do zbioru dokumentów.

  • Vector - Matematyczna reprezentacja dokumentu nazywana jest wektorem.

  • Model - Odnosi się do algorytmu używanego do przekształcania wektorów z jednej reprezentacji do drugiej.

Co to jest dokument?

Jak omówiono, odnosi się do jakiegoś tekstu. Jeśli przejdziemy bardziej szczegółowo, jest to obiekt typu sekwencji tekstu, który jest znany jako‘str’ w Pythonie 3. Na przykład w Gensim dokumentem może być wszystko, na przykład -

  • Krótki tweet zawierający 140 znaków
  • Pojedynczy akapit, czyli streszczenie artykułu lub pracy naukowej
  • Artykuł informacyjny
  • Book
  • Novel
  • Theses

Sekwencja tekstu

Typ sekwencji tekstu jest powszechnie znany jako ‘str’ w Pythonie 3. Jak wiemy, w Pythonie dane tekstowe są obsługiwane za pomocą łańcuchów lub dokładniej ‘str’obiekty. Ciągi znaków są w zasadzie niezmiennymi sekwencjami punktów kodowych Unicode i można je zapisać w następujący sposób -

  • Single quotes - Na przykład ‘Hi! How are you?’. Pozwala nam również osadzać podwójne cudzysłowy. Na przykład,‘Hi! “How” are you?’

  • Double quotes - Na przykład "Hi! How are you?". Pozwala nam również osadzać pojedyncze cudzysłowy. Na przykład,"Hi! 'How' are you?"

  • Triple quotes - Może mieć trzy pojedyncze cudzysłowy, takie jak, '''Hi! How are you?'''. lub trzy podwójne cudzysłowy, takie jak,"""Hi! 'How' are you?"""

Wszystkie spacje zostaną uwzględnione w literale ciągu.

Przykład

Poniżej znajduje się przykład dokumentu w Gensim -

Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”

Co to jest Corpus?

Korpus można zdefiniować jako duży i zorganizowany zbiór tekstów do odczytu maszynowego, tworzonych w naturalnym środowisku komunikacyjnym. W Gensim zbiór obiektów dokumentu nazywany jest korpusem. Liczba mnoga korpusu tocorpora.

Rola Corpus w Gensim

Korpus w Gensim spełnia następujące dwie role -

Służy jako dane wejściowe do szkolenia modelu

Pierwszą i najważniejszą rolą, jaką odgrywa korpus w Gensim, jest wprowadzenie do treningu modelu. Aby zainicjować wewnętrzne parametry modelu, podczas uczenia model szuka pewnych wspólnych tematów i tematów z korpusu szkoleniowego. Jak wspomniano powyżej, Gensim koncentruje się na modelach bez nadzoru, dlatego nie wymaga żadnej interwencji człowieka.

Służy jako ekstraktor tematów

Po przeszkoleniu modelu można go użyć do wyodrębnienia tematów z nowych dokumentów. Tutaj nowe dokumenty to te, które nie są wykorzystywane w fazie szkolenia.

Przykład

Korpus może zawierać wszystkie tweety danej osoby, listę wszystkich artykułów z gazety lub wszystkie artykuły naukowe na określony temat itp.

Zbieranie Corpus

Poniżej znajduje się przykład małego korpusu, który zawiera 5 dokumentów. Tutaj każdy dokument jest łańcuchem składającym się z jednego zdania.

t_corpus = [
   "A survey of user opinion of computer system response time",
   "Relation of user perceived response time to error measurement",
   "The generation of random binary unordered trees",
   "The intersection graph of paths in trees",
   "Graph minors IV Widths of trees and well quasi ordering",
]

Przetwarzanie wstępne Zbieranie korpusu

Po zebraniu korpusu należy wykonać kilka kroków wstępnego przetwarzania, aby zachować prostotę korpusu. Możemy po prostu usunąć niektóre powszechnie używane angielskie słowa, takie jak „the”. Możemy również usunąć słowa, które występują tylko raz w korpusie.

Na przykład następujący skrypt w języku Python jest używany do małych liter w każdym dokumencie, dzielenia go na białe znaki i odfiltrowywania słów ignorowanych -

Przykład

import pprint
t_corpus = [
   "A survey of user opinion of computer system response time", 
   "Relation of user perceived response time to error measurement", 
   "The generation of random binary unordered trees", 
   "The intersection graph of paths in trees", 
   "Graph minors IV Widths of trees and well quasi ordering",
]
stoplist = set('for a of the and to in'.split(' '))
processed_corpus = [[word for word in document.lower().split() if word not in stoplist]
   for document in t_corpus]
	
pprint.pprint(processed_corpus)
]

Wynik

[['survey', 'user', 'opinion', 'computer', 'system', 'response', 'time'],
['relation', 'user', 'perceived', 'response', 'time', 'error', 'measurement'],
['generation', 'random', 'binary', 'unordered', 'trees'],
['intersection', 'graph', 'paths', 'trees'],
['graph', 'minors', 'iv', 'widths', 'trees', 'well', 'quasi', 'ordering']]

Efektywne przetwarzanie wstępne

Gensim zapewnia również funkcję bardziej efektywnego przetwarzania wstępnego korpusu. W takim przetwarzaniu wstępnym możemy przekształcić dokument w listę tokenów składających się z małych liter. Możemy również zignorować tokeny, które są za krótkie lub za długie. Taka jest funkcjagensim.utils.simple_preprocess(doc, deacc=False, min_len=2, max_len=15).

gensim.utils.simple_preprocess() fucntion

Gensim udostępnia tę funkcję, aby przekształcić dokument w listę tokenów zapisanych małymi literami, a także do ignorowania tokenów, które są zbyt krótkie lub zbyt długie. Ma następujące parametry -

doc (str)

Odnosi się do dokumentu wejściowego, na którym należy zastosować przetwarzanie wstępne.

deacc (bool, opcjonalnie)

Ten parametr służy do usuwania znaków akcentu z tokenów. To używadeaccent() zrobić to.

min_len (int, opcjonalnie)

Za pomocą tego parametru możemy ustawić minimalną długość tokena. Żetony krótsze niż określona długość zostaną odrzucone.

max_len (int, opcjonalnie)

Za pomocą tego parametru możemy ustawić maksymalną długość tokena. Tokeny dłuższe niż określona długość zostaną odrzucone.

Wynikiem tej funkcji byłyby tokeny wyodrębnione z dokumentu wejściowego.