Problém s použitím prostorný tokenizer pro hraběte vectorizer

0

Otázka

Snažím se dělat analýza sentimentu na Amazonu recenze produktu pomocí Prostorná modulu pro předzpracování dat text. Kód jsem pomocí je přesně to. Upravil jsem soubor údajů, které používám podle toho, co je uvedeno v odkazu. Dostávám chybu:

 TypeError       Traceback (most recent call last)
<ipython-input-139-bcbf2d3c9cce> in <module>
      4                  ('classifier', classifier)])
      5 # Fit our data
----> 6 pipe_countvect.fit(X_train,y_train)
      7 # Predicting with a test dataset
      8 sample_prediction = pipe_countvect.predict(X_test)

~\.conda\envs\py36\lib\site-packages\sklearn\pipeline.py in fit(self, X, y, **fit_params)
    328         """
    329         fit_params_steps = self._check_fit_params(**fit_params)
--> 330         Xt = self._fit(X, y, **fit_params_steps)
    331         with _print_elapsed_time('Pipeline',
    332                                  self._log_message(len(self.steps) - 1)):

~\.conda\envs\py36\lib\site-packages\sklearn\pipeline.py in _fit(self, X, y, **fit_params_steps)
    294                 message_clsname='Pipeline',
    295                 message=self._log_message(step_idx),
--> 296                 **fit_params_steps[name])
    297             # Replace the transformer of the step with the fitted
    298             # transformer. This is necessary when loading the transformer

~\.conda\envs\py36\lib\site-packages\joblib\memory.py in __call__(self, *args, **kwargs)
    350 
    351     def __call__(self, *args, **kwargs):
--> 352         return self.func(*args, **kwargs)
    353 
    354     def call_and_shelve(self, *args, **kwargs):

~\.conda\envs\py36\lib\site-packages\sklearn\pipeline.py in _fit_transform_one(transformer, X, y, weight, message_clsname, message, **fit_params)
    738     with _print_elapsed_time(message_clsname, message):
    739         if hasattr(transformer, 'fit_transform'):
--> 740             res = transformer.fit_transform(X, y, **fit_params)
    741         else:
    742             res = transformer.fit(X, y, **fit_params).transform(X)

~\.conda\envs\py36\lib\site-packages\sklearn\feature_extraction\text.py in fit_transform(self, raw_documents, y)
   1197 
   1198         vocabulary, X = self._count_vocab(raw_documents,
-> 1199                                           self.fixed_vocabulary_)
   1200 
   1201         if self.binary:

~\.conda\envs\py36\lib\site-packages\sklearn\feature_extraction\text.py in _count_vocab(self, raw_documents, fixed_vocab)
   1108         for doc in raw_documents:
   1109             feature_counter = {}
-> 1110             for feature in analyze(doc):
   1111                 try:
   1112                     feature_idx = vocabulary[feature]

~\.conda\envs\py36\lib\site-packages\sklearn\feature_extraction\text.py in _analyze(doc, analyzer, tokenizer, ngrams, preprocessor, decoder, stop_words)
    104             doc = preprocessor(doc)
    105         if tokenizer is not None:
--> 106             doc = tokenizer(doc)
    107         if ngrams is not None:
    108             if stop_words is not None:

TypeError: 'str' object is not callable

Nejsem si jistý, co je příčinou této chyby a jak se zbavit. Jsem si jistá, že hrabě vectorizer vytváří řídké matice, a ne řetězec. Jedna věc, kterou jsem zvažoval, je, že jsem pomocí prostorná tokenizer, který byl použit v odkaz jako vectorizer = CountVectorizer(tokenizer = spacy_tokenizer, ngram_range=(1,1)) ale když jsem běžel program, to bylo říkal, že spacy_tokenizer byl definován. Tak jsem použil vectorizer = CountVectorizer(tokenizer = 'spacy', ngram_range=(1,1)) místo. Ale když jsem se odstranit to pak nevím, jak používat prostorný tokenizer, a to buď způsobem, nejsem si jistá, že to bylo opravdu příčinou problému. Prosím, pomozte mi!

compiler-errors debugging nlp spacy
2021-11-21 20:22:50
1

Nejlepší odpověď

0

Chyba přichází na tento řádek:

doc = tokenizer(doc)

Protože to říká 'str' is not callable a jediné, co nazývá, zde je tokenizer objekt, vypadá to, že váš tokenizer je řetězec z nějakého důvodu.

Na základě kódu, souvisí to vypadá, že spacy_tokenizer objekt je nesprávně nakonfigurován. Ale, že proměnná není definovaná nikde v kódu i přesto, že prošel jako možnost, takže kód propojených vypadá to, že se to nemůže spustit.

Pomohlo by, pokud byste mohli udělat minimální příklad, který byste mohli skutečně vložit do otázky.

2021-11-22 04:13:18

Dobrý den! Díky za to. Hledal jsem trochu víc a zjistil, že jsem mohl místo toho použít tento kód pro tokenizer: import prostorný nlp = prostorný.load('cs', disable=['ner', 'analyzátor', 'aplikace']) def spacy_tokenizer(doc): return [x.orth_ pro x v nlp(doc)] To fungovalo!
Aritra Majumdar

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................