Python을 사용하여 텍스트 언어 식별

텍스트 언어 식별은 주어진 텍스트 조각의 언어를 예측하는 프로세스입니다. 콘텐츠가 영어가 아닌 것을 감지하면 Chrome에서 웹페이지를 번역하라는 팝업을 표시하는 경우에 발생했을 수 있습니다. 뒤에서 Chrome은 모델을 사용하여 웹페이지에서 사용되는 텍스트 언어를 예측합니다.



NLP용 데이터 세트로 작업할 때 말뭉치에 혼합 언어 세트가 포함될 수 있습니다. 여기서 언어 식별은 몇 가지 언어를 필터링하거나 코퍼스를 단일 언어로 번역한 다음 다운스트림 작업에 사용하는 데 유용할 수 있습니다.

이 글에서는 fasttext 언어 감지 라이브러리의 작동 메커니즘과 사용법에 대해 설명하겠습니다.

페이스북의 Fasttext 라이브러리





Fasttext은 단어 임베딩 및 텍스트 분류를 위한 Python의 오픈 소스 라이브러리입니다. 연구보다는 프로덕션 사용 사례를 위해 제작되었으므로 성능과 크기에 최적화되어 있습니다. Word2Vecsubword information 사용과 같은 아이디어로 model compression 모델을 확장합니다.

언어 식별을 위해 사전 훈련된 fasttext 언어 식별 모델을 사용할 수 있습니다. 이 모델은 Wikipedia , TatoebaSETimes 에서 가져온 데이터 세트에서 훈련되었습니다. 기본 아이디어는 (텍스트, 언어) 쌍의 훈련 데이터를 준비한 다음 분류기를 훈련시키는 것입니다.



아래 벤치마크는 이러한 사전 훈련된 언어 감지 모델이 인기 있는 또 다른 Python 언어 감지 라이브러리인 langid.py보다 우수함을 보여줍니다. Fasttext는 정확도가 더 높고 추론 시간도 매우 빠릅니다. 프랑스어, 독일어, 영어, 스페인어, 중국어 등 다양한 언어를 지원합니다.



언어 감지를 위한 Fasttext 사용


  • pip를 사용하여 Fasttext 라이브러리를 설치합니다.

  • pip install fasttext
    



  • 사전 학습된 모델에는 두 가지 버전이 있습니다. 메모리 및 공간 요구 사항에 맞는 모델을 선택하십시오.

  • lid.176.bin : 더 빠르고 약간 더 정확하지만 크기가 126MB임

  • lid.176.ftz : 파일 크기가 917kB인 모델의 압축 버전

  • Fasttext에서 사전 훈련된 모델을 특정 위치로 다운로드합니다. 나중에 코드에서 이 위치를 지정해야 합니다. 이 예에서는/tmp 디렉토리에 다운로드합니다.

  • wget -O /tmp/lid.176.bin https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin
    


  • 이제 fasttext를 가져온 다음 이전에 다운로드한 미리 훈련된 경로에서 모델을 로드합니다.

  • import fasttext
    
    PRETRAINED_MODEL_PATH = '/tmp/lid.176.bin'
    model = fasttext.load_model(PRETRAINED_MODEL_PATH)
    


  • 'I eat food'를 의미하는 프랑스어의 예문을 살펴보겠습니다. fasttext로 언어를 감지하려면 문장 목록을 예측 함수에 전달하기만 하면 됩니다. 문장은 UTF-8 형식이어야 합니다.



  • sentences = ['je mange de la nourriture']
    predictions = model.predict(sentences)
    print(predictions)
    
    # ([['__label__fr']], array([[0.96568173]]))
    


  • 모델이 두 튜플을 다시 반환합니다. 그 중 하나는 언어 레이블의 배열이고 다른 하나는 각 문장에 대한 신뢰도입니다. 여기서 fr는 프랑스어의 ISO 639 코드입니다. 모델은 언어가 프랑스어라고 96.56% 확신합니다.
  • Fasttext는 170개 언어 중에서 가장 가능성이 높은 언어에 대한 ISO 코드를 반환합니다. ISO 639 코드 페이지를 참조하여 각 기호의 언어를 찾을 수 있습니다.

  • af als am an ar arz as ast av az azb ba bar bcl be bg bh bn bo bpy br bs bxr ca cbk ce ceb ckb co cs cv cy da de diq dsb dty dv el eml en eo es et eu fa fi fr frr fy ga gd gl gn gom gu gv he hi hif hr hsb ht hu hy ia id ie ilo io is it ja jbo jv ka kk km kn ko krc ku kv kw ky la lb lez li lmo lo lrc lt lv mai mg mhr min mk ml mn mr mrj ms mt mwl my myv mzn nah nap nds ne new nl nn no oc or os pa pam pfl pl pms pnb ps pt qu rm ro ru rue sa sah sc scn sco sd sh si sk sl so sq sr su sv sw ta te tg th tk tl tr tt tyv ug uk ur uz vec vep vi vls vo wa war wuu xal xmf yi yo yue zh
    


  • 프로그래밍 방식으로 언어 기호를 다시 언어 이름으로 변환하려면 pycountry 패키지를 사용할 수 있습니다. pip를 사용하여 패키지를 설치합니다.

  • pip install pycountry
    


  • 이제 기호를 pycountry에 전달하면 언어 이름을 반환받게 됩니다.

  • from pycountry import languages
    
    lang_name = languages.get(alpha_2='fr').name
    print(lang_name)
    # french
    


    결론



    따라서 우리는 파이썬에서 언어 감지에 fasttext를 어떻게 사용할 수 있는지 살펴보았습니다. 이는 자연어 처리 프로젝트에서 영어가 아닌 응답을 필터링하고 처리하는 데 매우 유용합니다.

    연결하다



    이 블로그 게시물이 마음에 드셨다면 매주 새 블로그 게시물을 공유하는 곳에서 저와 연락해 주시기 바랍니다.

    좋은 웹페이지 즐겨찾기