¿Cómo inicializar un `doc` en textacy 0.6.2?

Tratar de seguir la simple inicialización de Doc en los documentos en Python 2 no funciona:

 >>> import textacy >>> content = ''' ... The apparent symmetry between the quark and lepton families of ... the Standard Model (SM) are, at the very least, suggestive of ... a more fundamental relationship between them. In some Beyond the ... Standard Model theories, such interactions are mediated by ... leptoquarks (LQs): hypothetical color-triplet bosons with both ... lepton and baryon number and fractional electric charge.''' >>> metadata = { ... 'title': 'A Search for 2nd-generation Leptoquarks at √s = 7 TeV', ... 'author': 'Burton DeWilde', ... 'pub_date': '2012-08-01'} >>> doc = textacy.Doc(content, metadata=metadata) Traceback (most recent call last): File "", line 1, in  File "/Users/a/anaconda/envs/env1/lib/python2.7/site-packages/textacy/doc.py", line 120, in __init__ {compat.unicode_, SpacyDoc}, type(content))) ValueError: `Doc` must be initialized with set([, ]) content, not "" 

¿Cómo debería ser esa simple intialización para una cadena o una secuencia de cadenas?

ACTUALIZACIÓN :

Pasar unicode(content) a textacy.Doc() escupe

 ImportError: 'cld2-cffi' must be installed to use textacy's automatic language detection; you may do so via 'pip install cld2-cffi' or 'pip install textacy[lang]'. 

lo que hubiera sido bueno tener desde el momento en que se instaló textacy, imo.

Incluso después de instalar cld2-cffi , intentar el código anterior arroja

 Traceback (most recent call last): File "", line 1, in  File "/Users/a/anaconda/envs/env1/lib/python2.7/site-packages/textacy/doc.py", line 114, in __init__ self._init_from_text(content, metadata, lang) File "/Users/a/anaconda/envs/env1/lib/python2.7/site-packages/textacy/doc.py", line 136, in _init_from_text spacy_lang = cache.load_spacy(langstr) File "/Users/a/anaconda/envs/env1/lib/python2.7/site-packages/cachetools/__init__.py", line 46, in wrapper v = func(*args, **kwargs) File "/Users/a/anaconda/envs/env1/lib/python2.7/site-packages/textacy/cache.py", line 99, in load_spacy return spacy.load(name, disable=disable) File "/Users/a/anaconda/envs/env1/lib/python2.7/site-packages/spacy/__init__.py", line 21, in load return util.load_model(name, **overrides) File "/Users/a/anaconda/envs/env1/lib/python2.7/site-packages/spacy/util.py", line 120, in load_model raise IOError("Can't find model '%s'" % name) IOError: Can't find model 'en' 

El problema, como se muestra en el rastreo, está en textacy/doc.py en la función _init_from_text() , que intenta detectar el lenguaje y lo llama con la cadena 'en' en la línea 136. (El representante de spacy toca esto en este emitir comentario. )

Resolví esto proporcionando una cadena lang válida (unicode) de u'en_core_web_sm' y utilizando unicode en el content y las cadenas de argumentos lang .

 import textacy content = u''' The apparent symmetry between the quark and lepton families of the Standard Model (SM) are, at the very least, suggestive of a more fundamental relationship between them. In some Beyond the Standard Model theories, such interactions are mediated by leptoquarks (LQs): hypothetical color-triplet bosons with both lepton and baryon number and fractional electric charge.''' metadata = { 'title': 'A Search for 2nd-generation Leptoquarks at √s = 7 TeV', 'author': 'Burton DeWilde', 'pub_date': '2012-08-01'} doc = textacy.Doc(content, metadata=metadata, lang=u'en_core_web_sm') 

Que una cadena en lugar de una cadena Unicode (con un mensaje de error críptico) cambie el comportamiento, el hecho de que falte un paquete y la forma quizás obsoleta / quizás no exhaustiva de usar cadenas de lenguaje spacy me parecen errores. 🤷‍♂️

Parece que estás usando Python 2 y obtuviste un error de Unicode. En los documentos de textacy hay una nota sobre algunos matices de Unicode cuando se usa Python 2:

Nota: En casi todos los casos, textacy (así como spacy ) espera trabajar con datos de texto Unicode. A lo largo del código, esto se indica como str para que sea coherente con el tipo de cadena predeterminado de Python 3; Sin embargo, los usuarios de Python 2 deben ser conscientes de usar unicode y convertir el tipo de cadena predeterminado (bytes) según sea necesario.

Por lo tanto, le daría una oportunidad a esto (note la u''' ):

 content = u''' The apparent symmetry between the quark and lepton families of the Standard Model (SM) are, at the very least, suggestive of a more fundamental relationship between them. In some Beyond the Standard Model theories, such interactions are mediated by leptoquarks (LQs): hypothetical color-triplet bosons with both lepton and baryon number and fractional electric charge.''' 

Esto produjo un objeto Doc como se esperaba para mí (aunque en Python 3).