py3でnltkを使用すると「悪いエスケープ」が発生する


8

NLTKバージョン3.4.5。Python 3.7.4。OSXバージョン10.14.5。

コードベースを2.7からアップグレードすると、この問題が発生し始めました。新しいvirtualenvで、すべてのパッケージと拡張機能をキャッシュなしで再インストールしました。これがどのようにして私だけに起こり得るのかについてかなり不思議に思いました。同じエラーをオンラインで他の誰かが見つけられません。

(venv3) gmoss$ python
Python 3.7.4 (default, Sep  7 2019, 18:27:02) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import nltk
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/site-packages/nltk/__init__.py", line 150, in <module>
    from nltk.translate import *
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/site-packages/nltk/translate/__init__.py", line 23, in <module>
    from nltk.translate.meteor_score import meteor_score as meteor
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/site-packages/nltk/translate/meteor_score.py", line 10, in <module>
    from nltk.stem.porter import PorterStemmer
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/site-packages/nltk/stem/__init__.py", line 29, in <module>
    from nltk.stem.snowball import SnowballStemmer
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/site-packages/nltk/stem/snowball.py", line 314, in <module>
    class ArabicStemmer(_StandardStemmer):
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/site-packages/nltk/stem/snowball.py", line 326, in ArabicStemmer
    r'[\u064b-\u064c-\u064d-\u064e-\u064f-\u0650-\u0651-\u0652]'
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/re.py", line 234, in compile
    return _compile(pattern, flags)
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/re.py", line 286, in _compile
    p = sre_compile.compile(pattern, flags)
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/sre_compile.py", line 764, in compile
    p = sre_parse.parse(p, flags)
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/sre_parse.py", line 930, in parse
    p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/sre_parse.py", line 426, in _parse_sub
    not nested and not items))
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/sre_parse.py", line 536, in _parse
    code1 = _class_escape(source, this)
  File "/Users/gmoss/Documents/constructor/autocomplete/venv3/lib/python3.7/sre_parse.py", line 337, in _class_escape
    raise source.error('bad escape %s' % escape, len(escape))
re.error: bad escape \u at position 1

1
これは役に立つかもしれません:stackoverflow.com/questions/54330673/…–
Kaushal28

回答:


1

\uエラーメッセージにあるように、Python正規表現はエスケープをサポートしていません。

エラーがnltkパッケージに起因することは奇妙ですが。そのパッケージの作者は、正規表現の書き方を確実に知っています。nltk3.7ディレクトリにあるKaminstallerですが、誤ってパッケージのPython 2.7バージョンを入手しましたか?

nltkパッケージにはすべてのコードの単体テストがあると思います。そのパッケージに対してバグレポートを提出します。


>誤ってPython 2.7バージョンを手に入れましたか?私はそうは思いません-インストール元のホイールはnltk-3.4.5-cp37-none-any.whl
gmoss

0

他の誰かがこれに遭遇した場合、3.4.2にダウングレードすると問題が修正されます。これは、関連するファイルにArabicStemmerが導入される前であるためです。私はnltkで問題をオープンし、うまくいけばそれは解決されるでしょう。


0

補足すると、これは誤った警告でした。誤ったクリーンアップスクリプトが、仮想環境内のNLTKの共有オブジェクトファイルを削除していたため、他のバージョンにフォールバックしていたと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.