Câu hỏi Python: Làm thế nào để xác định ngôn ngữ?


Tôi muốn có được điều này:

Input text: "ру́сский язы́к"
Output text: "Russian" 

Input text: "中文"
Output text: "Chinese" 

Input text: "にほんご"
Output text: "Japanese" 

Input text: "العَرَبِيَّة"
Output text: "Arabic" 

Làm thế nào tôi có thể làm điều đó trong python? Cảm ơn.


12
2017-08-25 10:26


gốc


Bạn đã thử gì? - Raskayu
điều này có thể giúp stackoverflow.com/questions/4545977/… - Sardorbek Imomaliev


Các câu trả lời:


Bạn đã có một cái nhìn tại langdetect?

from langdetect import detect

lang = detect("Ein, zwei, drei, vier")

print lang
#output: de

19
2017-08-25 10:38



Không chính xác lắm - phát hiện ngôn ngữ của văn bản 'cấu trúc giải phẫu' như ro(Rumani). Cần có nhiều đầu ra ngôn ngữ cho các trường hợp như vậy. polyglot hoạt động tốt hơn nhiều. - Yuriy Petrovskiy
Thú vị, ví dụ tương tự langdetect có thể xác định các ngôn ngữ khác nhau :-) - Denis Kuzin


  1. TextBlob. Yêu cầu gói NLTK, sử dụng Google.

    b = TextBlob("bonjour")
    b.detect_language()
    

pip install textblob

  1. Đa ngôn ngữ. Yêu cầu các thư viện phức tạp và một số thư viện phức tạp, không thể làm cho nó hoạt động cho Windows. (Đối với Windows, hãy tải phiên bản phù hợp PyICU, Morfessor và PyCLD2 từ đây, sau đó chỉ pip install downloaded_wheel.whl.) Có khả năng phát hiện văn bản với các ngôn ngữ hỗn hợp.

    from polyglot.detect import Detector
    
    mixed_text = u"""
    China (simplified Chinese: 中国; traditional Chinese: 中國),
    officially the People's Republic of China (PRC), is a sovereign state
    located in East Asia.
    """
    for language in Detector(mixed_text).languages:
            print(language)
    
    # name: English     code: en       confidence:  87.0 read bytes:  1154
    # name: Chinese     code: zh_Hant  confidence:   5.0 read bytes:  1755
    # name: un          code: un       confidence:   0.0 read bytes:     0
    

pip install polyglot

Để cài đặt các phụ thuộc, hãy chạy: sudo apt-get install python-numpy libicu-dev

  1. chardet cũng có một tính năng phát hiện ngôn ngữ nếu có các byte ký tự trong phạm vi (127-255]:

    >>> chardet.detect("Я люблю вкусные пампушки".encode('cp1251'))
    {'encoding': 'windows-1251', 'confidence': 0.9637267119204621, 'language': 'Russian'}
    

pip install chardet

  1. langdetect Yêu cầu phần lớn văn bản. Nó sử dụng cách tiếp cận không xác định dưới mui xe. Điều đó có nghĩa là bạn nhận được các kết quả khác nhau cho cùng một mẫu văn bản. Tài liệu cho biết bạn phải sử dụng mã sau để xác định mã:

    from langdetect import detect, DetectorFactory
    DetectorFactory.seed = 0
    detect('今一はお前さん')
    

pip install langdetect

  1. guess_language Có thể phát hiện các mẫu rất ngắn bằng cách sử dụng điều này kiểm tra chính tả với từ điển.

pip install guess_language-spirit

  1. langid cung cấp cả hai mô-đun

    import langid
    langid.classify("This is a test")
    # ('en', -54.41310358047485)
    

và một công cụ dòng lệnh:

    $ langid < README.md

pip install langid


18
2017-11-04 02:32



detectlang là cách nhanh hơn Textblob - Mohamed Anwarvic


Bạn có thể thử xác định nhóm ký tự Unicode trong chuỗi đầu vào để chỉ ra loại ngôn ngữ, (Ví dụ: Cyrillic cho tiếng Nga) và sau đó tìm kiếm các ký hiệu ngôn ngữ cụ thể trong văn bản.


0
2017-08-25 11:10