Python - Scrubadub.clean не работает - Не удается правильно очистить текст PII + HTTP Ошибка 503 - PullRequest
0 голосов
/ 20 февраля 2019

Извините, и это, вероятно, основной вопрос, но, поскольку я изучаю scrubadub и пытаюсь заставить его работать на ноутбуке Jupyter.Он продолжал показывать - HTTP Ошибка 503: Служба недоступна. Это то, что я ввел, точно так же, как документация scrubadub.

text = u"John is a cat"
scrubadub.clean(text, replace_with='placeholder') 
u"{{NAME}} is a cat"

И это сообщение об ошибке, которое я получил:

HTTPError                                 Traceback (most recent call last)
<ipython-input-92-5b0754baae94> in <module>()
      1 text = u"John is a cat"
----> 2 scrubadub.clean(text, replace_with='placeholder')
      3 u"{{NAME}} is a cat"

/anaconda3/lib/python3.7/site-packages/scrubadub/__init__.py in clean(text, cls, **kwargs)
     14     cls = cls or Scrubber
     15     scrubber = cls()
---> 16     return scrubber.clean(text, **kwargs)

/anaconda3/lib/python3.7/site-packages/scrubadub/scrubbers.py in clean(self, text, **kwargs)
     55         clean_chunks = []
     56         filth = Filth()
---> 57         for next_filth in self.iter_filth(text):
     58             clean_chunks.append(text[filth.end:next_filth.beg])
     59             clean_chunks.append(next_filth.replace_with(**kwargs))

снимок экрана для ошибки # 1 снимок экрана для ошибки # 2

Я также попробовал приведенный ниже код, и я также получаю сообщения об ошибках, наверное, еслиМне не хватает аргументов в коде ...

import scrubadub
class MyFilth(scrubadub.filth.base.Filth):
    type = 'mine'
class MyDetector(scrubadub.detectors.base.Detector):
    filth_cls = MyFilth
    def iter_filth(self, text):
       # do something here
       pass

scrubber = scrubadub.Scrubber()
scrubber.add_detector(MyDetector)

text = u"My stuff can be found there"
scrubadub.clean(text)
u"{{MINE}} can be found there."

StopIteration                             Traceback (most recent call last)
/anaconda3/lib/python3.7/site-packages/scrubadub/detectors/base.py in iter_filth(self, text)
     21         if self.filth_cls.regex is None:
---> 22             raise StopIteration
     23         for match in self.filth_cls.regex.finditer(text):

StopIteration: 

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
<ipython-input-94-2cc23d003da7> in <module>()
     11 
     12 text = u"My stuff can be found there"
---> 13 scrubadub.clean(text)
     14 u"{{MINE}} can be found there."

/anaconda3/lib/python3.7/site-packages/scrubadub/__init__.py in clean(text, cls, **kwargs)
     14     cls = cls or Scrubber
     15     scrubber = cls()
---> 16     return scrubber.clean(text, **kwargs)

1 Ответ

0 голосов
/ 21 марта 2019

Существует открытая проблема для того же на github, так как scrubadub, кажется, не очень хорошо работает с python 3.7, который вы используете в настоящее время.

Я смог воспроизвести его с 3.7 без ноутбука.Так что это проблема с ноутбуком.

В качестве временного решения, изменение env на 3.6 (или худший случай 2.7 крайне не рекомендуется) работает.

https://github.com/datascopeanalytics/scrubadub/issues/40 Остановить проблему с итерацией

...