Este módulo se puede usar para reemplazar las palabras clave en oraciones o extraer palabras clave de las oraciones. Se basa en el algoritmo FlashText.
$ Pip Install FlashText
La documentación se puede encontrar en FlashText Leer los documentos.
>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> # keyword_processor.add_keyword(<unclean name>, <standardised name>)
>>> keyword_processor.add_keyword( ' Big Apple ' , ' New York ' )
>>> keyword_processor.add_keyword( ' Bay Area ' )
>>> keywords_found = keyword_processor.extract_keywords( ' I love Big Apple and Bay Area. ' )
>>> keywords_found
>>> # ['New York', 'Bay Area']>>> keyword_processor.add_keyword( ' New Delhi ' , ' NCR region ' )
>>> new_sentence = keyword_processor.replace_keywords( ' I love Big Apple and new delhi. ' )
>>> new_sentence
>>> # 'I love New York and NCR region.'>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor( case_sensitive = True )
>>> keyword_processor.add_keyword( ' Big Apple ' , ' New York ' )
>>> keyword_processor.add_keyword( ' Bay Area ' )
>>> keywords_found = keyword_processor.extract_keywords( ' I love big Apple and Bay Area. ' )
>>> keywords_found
>>> # ['Bay Area']>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> keyword_processor.add_keyword( ' Big Apple ' , ' New York ' )
>>> keyword_processor.add_keyword( ' Bay Area ' )
>>> keywords_found = keyword_processor.extract_keywords( ' I love big Apple and Bay Area. ' , span_info = True )
>>> keywords_found
>>> # [('New York', 7, 16), ('Bay Area', 21, 29)]>>> from flashtext import KeywordProcessor
>>> kp = KeywordProcessor()
>>> kp.add_keyword( ' Taj Mahal ' , ( ' Monument ' , ' Taj Mahal ' ))
>>> kp.add_keyword( ' Delhi ' , ( ' Location ' , ' Delhi ' ))
>>> kp.extract_keywords( ' Taj Mahal is in Delhi. ' )
>>> # [('Monument', 'Taj Mahal'), ('Location', 'Delhi')]
>>> # NOTE : replace_keywords feature won't work with this.>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> keyword_processor.add_keyword( ' Big Apple ' )
>>> keyword_processor.add_keyword( ' Bay Area ' )
>>> keywords_found = keyword_processor.extract_keywords( ' I love big Apple and Bay Area. ' )
>>> keywords_found
>>> # ['Big Apple', 'Bay Area']>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> keyword_dict = {
>>> " java " : [ " java_2e " , " java programing " ],
>>> " product management " : [ " PM " , " product manager " ]
>>> }
>>> # {'clean_name': ['list of unclean names']}
>>> keyword_processor.add_keywords_from_dict(keyword_dict)
>>> # Or add keywords from a list:
>>> keyword_processor.add_keywords_from_list([ " java " , " python " ])
>>> keyword_processor.extract_keywords( ' I am a product manager for a java_2e platform ' )
>>> # output ['product management', 'java']>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> keyword_dict = {
>>> " java " : [ " java_2e " , " java programing " ],
>>> " product management " : [ " PM " , " product manager " ]
>>> }
>>> keyword_processor.add_keywords_from_dict(keyword_dict)
>>> print (keyword_processor.extract_keywords( ' I am a product manager for a java_2e platform ' ))
>>> # output ['product management', 'java']
>>> keyword_processor.remove_keyword( ' java_2e ' )
>>> # you can also remove keywords from a list/ dictionary
>>> keyword_processor.remove_keywords_from_dict({ " product management " : [ " PM " ]})
>>> keyword_processor.remove_keywords_from_list([ " java programing " ])
>>> keyword_processor.extract_keywords( ' I am a product manager for a java_2e platform ' )
>>> # output ['product management']>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> keyword_dict = {
>>> " java " : [ " java_2e " , " java programing " ],
>>> " product management " : [ " PM " , " product manager " ]
>>> }
>>> keyword_processor.add_keywords_from_dict(keyword_dict)
>>> print ( len (keyword_processor))
>>> # output 4>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> keyword_processor.add_keyword( ' j2ee ' , ' Java ' )
>>> ' j2ee ' in keyword_processor
>>> # output: True
>>> keyword_processor.get_keyword( ' j2ee ' )
>>> # output: Java
>>> keyword_processor[ ' colour ' ] = ' color '
>>> keyword_processor[ ' colour ' ]
>>> # output: color>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> keyword_processor.add_keyword( ' j2ee ' , ' Java ' )
>>> keyword_processor.add_keyword( ' colour ' , ' color ' )
>>> keyword_processor.get_all_keywords()
>>> # output: {'colour': 'color', 'j2ee': 'Java'}Para detectar el límite de palabras actualmente, cualquier personaje que no sea este W [A-ZA-Z0-9_] se considera un límite de palabras.
>>> from flashtext import KeywordProcessor
>>> keyword_processor = KeywordProcessor()
>>> keyword_processor.add_keyword( ' Big Apple ' )
>>> print (keyword_processor.extract_keywords( ' I love Big Apple/Bay Area. ' ))
>>> # ['Big Apple']
>>> keyword_processor.add_non_word_boundary( ' / ' )
>>> print (keyword_processor.extract_keywords( ' I love Big Apple/Bay Area. ' ))
>>> # [] $ git clone https://github.com/vi3k6i5/flashtext $ CD FlashText $ PIP install pytest $ python setup.py prueba
$ git clone https://github.com/vi3k6i5/flashtext $ CD FlashText/Docs $ Pip Instalar Sphinx $ make html $ # abre _build/html/index.html en el navegador para verlo localmente
Es un algoritmo personalizado basado en el algoritmo AHO-CORASICK y el diccionario Trie.

Tiempo tomado por FlashText para encontrar términos en comparación con Regex.
Tiempo tomado por FlashText para reemplazar los términos en comparación con Regex.
Enlace al código para la evaluación comparativa de la función Buscar y reemplazar la función.
La idea de esta biblioteca proviene de la siguiente pregunta de Stackoverflow.
El artículo original publicado en el algoritmo de FlashText.
@Article {2017arxiv171100046s,
Autor = {{Singh}, V.},
title = "{reemplazar o recuperar palabras clave en documentos a escala}",
Journal = {arxiv e-imprimes},
ArchivePrefix = "ARXIV",
ePrint = {1711.00046},
primariaClass = "cs.ds",
Palabras clave = {informática - estructuras de datos y algoritmos},
año = 2017,
mes = OCT,
adsurl = {http://adsabs.harvard.edu/abs/2017arxiv171100046s},
ADSNOTE = {proporcionado por el sistema de datos de astrofísica SAO/NASA}
}
El artículo publicado en Medium Freecodecamp.
El proyecto tiene licencia bajo la licencia MIT.