Hướng dẫn spell checker python - python kiểm tra chính tả

Sử dụng pyenchant cơ bản

Sau khi được cài đặt, chức năng của Pyenchant có sẵn trong mô -đun Enchant.

Tạo và sử dụng các đối tượng từ điển

Đối tượng quan trọng nhất trong mô -đun pyenchant là đối tượng Dict, đại diện cho một từ điển. Những đối tượng này được sử dụng để kiểm tra chính tả của các từ và để nhận được đề xuất cho các từ sai chính tả. Những điều sau đây cho thấy cách xây dựng một

>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.
0 đơn giản và sử dụng nó để kiểm tra một số từ:

>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.check("Hello")
True
>>> d.check("Helo")
False

Từ điển được tạo bằng cách sử dụng một thẻ ngôn ngữ chỉ định ngôn ngữ cần kiểm tra - trong trường hợp này là, EN en_us có nghĩa là tiếng Anh Mỹ. Nếu thẻ ngôn ngữ không được chỉ định, một nỗ lực được thực hiện để xác định ngôn ngữ hiện đang được sử dụng. Điều này không phải lúc nào cũng có thể, trong trường hợp đó một lỗi được nêu ra.

Khi ngôn ngữ hiện tại có thể được xác định, nó hoạt động như sau:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU

Tất nhiên, điều này vẫn có thể thất bại nếu từ điển thích hợp không có sẵn. Nếu không thể xác định được, hành vi như sau:

>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.

Có một số chức năng cấp cao nhất trong mô-đun Enchant có thể được sử dụng để xử lý từ điển:

  • >>> d = enchant.Dict()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "enchant/__init__.py", line 467, in __init__
        raise Error(err)
    enchant.Error: No tag specified and default language could not be determined.
    
    1: Kiểm tra xem có sẵn một ngôn ngữ không

  • >>> d = enchant.Dict()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "enchant/__init__.py", line 467, in __init__
        raise Error(err)
    enchant.Error: No tag specified and default language could not be determined.
    
    2: Xây dựng và trả về một đối tượng Dict mới

  • >>> d = enchant.Dict()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "enchant/__init__.py", line 467, in __init__
        raise Error(err)
    enchant.Error: No tag specified and default language could not be determined.
    
    3: Liệt kê các ngôn ngữ có sẵn các ngôn ngữ

>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']

Như được hiển thị trước đây, phương thức

>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.
4 có thể được sử dụng để kiểm tra xem một từ có được đánh vần chính xác không. Để nhận được đề xuất cho một từ sai chính tả, hãy sử dụng phương thức đề xuất như được hiển thị bên dưới:

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]

Các đề xuất được trả lại trong một danh sách, được đặt hàng từ nhiều khả năng thay thế nhất có thể ít nhất.

Khi một hiệu chỉnh được thực hiện thành một từ bị bỏ lỡ, thường rất hữu ích khi lưu trữ sự điều chỉnh này theo một cách nào đó để sử dụng sau này. Đối tượng

>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.
0 cung cấp một số phương pháp để xử lý việc này:

  • >>> d = enchant.Dict()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "enchant/__init__.py", line 467, in __init__
        raise Error(err)
    enchant.Error: No tag specified and default language could not be determined.
    
    6: Lưu trữ một từ không được công nhận trong từ điển cá nhân của người dùng để nó được công nhận là chính xác trong tương lai.

  • >>> d = enchant.Dict()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "enchant/__init__.py", line 467, in __init__
        raise Error(err)
    enchant.Error: No tag specified and default language could not be determined.
    
    7: Lưu trữ một từ được công nhận trong danh sách loại trừ cá nhân của người dùng, để nó được xác định là một lỗi trong tương lai.

  • >>> d = enchant.Dict()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "enchant/__init__.py", line 467, in __init__
        raise Error(err)
    enchant.Error: No tag specified and default language could not be determined.
    
    8: Lưu trữ một từ không được công nhận để nó được công nhận là chính xác trong khi đối tượng Dict vẫn đang được sử dụng.

  • >>> d = enchant.Dict()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
      File "enchant/__init__.py", line 467, in __init__
        raise Error(err)
    enchant.Error: No tag specified and default language could not be determined.
    
    9: Lưu ý rằng một từ đã được sử dụng để thay thế một từ khác, có nghĩa là nó sẽ xuất hiện cao hơn trong danh sách các đề xuất trong tương lai.

Danh sách từ cá nhân

Các đối tượng Dict cũng có thể được sử dụng để kiểm tra các từ dựa trên danh sách tùy chỉnh các từ được quay chính xác được gọi là danh sách từ cá nhân. Đây chỉ đơn giản là một tệp liệt kê các từ cần xem xét, một từ trên mỗi dòng. Ví dụ sau đây tạo ra một đối tượng Dict cho danh sách từ cá nhân được lưu trữ trong MY MySwords.txt,:

>>> pwl = enchant.request_pwl_dict("mywords.txt")

Danh sách từ cá nhân đối tượng Dict có thể được sử dụng theo cách tương tự như các đối tượng Dict tham chiếu một từ điển ngôn ngữ. Khi phương thức thêm đối tượng được gọi, các mục mới sẽ được nối xuống dưới cùng của tệp.

Pyenchant cũng cung cấp lớp

>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
0 có thể được sử dụng để kết hợp từ điển ngôn ngữ và tệp danh sách từ cá nhân:

>>> d2 = enchant.DictWithPWL("en_US","mywords.txt")
>>> d2.check("Hello")
True

Kiểm tra toàn bộ khối văn bản

Mặc dù các đối tượng

>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
1 rất hữu ích cho việc kiểm tra chính tả, chúng không thể được sử dụng trực tiếp để kiểm tra, ví dụ, toàn bộ một đoạn văn. Mô -đun
>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
2 cung cấp lớp
>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
3 được thiết kế để xử lý nhiệm vụ này.

Các đối tượng Spellchecker được tạo theo cùng một cách với các đối tượng Dict - bằng cách chuyển thẻ ngôn ngữ cho hàm tạo. Phương pháp

>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
4 được sử dụng để đặt văn bản sẽ được kiểm tra. Khi điều này được thực hiện, đối tượng kiểm tra chính tả có thể được sử dụng như một trình lặp lại so với các lỗi chính tả trong văn bản. Điều này được minh họa tốt nhất bằng một ví dụ đơn giản. Mã sau sẽ in ra các lỗi gặp phải trong một chuỗi:

>>> from enchant.checker import SpellChecker
>>> chkr = SpellChecker("en_US")
>>> chkr.set_text("This is sme sample txt with erors.")
>>> for err in chkr:
...     print("ERROR:", err.word)
...
ERROR: sme
ERROR: txt
ERROR: erors

Trình kiểm tra chính tả có thể sử dụng các bộ lọc để bỏ qua các biểu mẫu từ nhất định, bằng cách chuyển danh sách các bộ lọc trong đối số từ khóa:

>>> from enchant.checker import SpellChecker
>>> from enchant.tokenize import EmailFilter, URLFilter
>>> chkr = SpellChecker("en_US",filters=[EmailFilter,URLFilter])

Mô hình Iterator có thể được sử dụng để thực hiện nhiều chức năng kiểm tra chính tả. Như các ví dụ về cách thực hiện điều này, Pyenchant cung cấp hộp thoại kiểm tra chính tả dựa trên WXPython và chương trình kiểm tra chính tả dòng lệnh. Mặc dù dự định chủ yếu là bản demo chức năng, nhưng chúng cũng khá hữu ích theo cách riêng của chúng.

WxSpellCheckerDialog

Mô -đun

>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
5 cung cấp lớp
>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
6 có thể được sử dụng để kiểm tra tương tác chính tả của một số văn bản. Mã bên dưới cho thấy cách tạo và sử dụng hộp thoại như vậy từ trong ứng dụng WxPython.

Nó sẽ xuất hiện một hộp thoại đánh vần đơn giản như đoạn nào được hiển thị ở đây. Mỗi lỗi chính tả được tô sáng lần lượt, với các nút cung cấp một loạt các tùy chọn cho cách xử lý lỗi:

  • Bỏ qua: Bỏ qua sự xuất hiện hiện tại của từ

  • Bỏ qua tất cả: Bỏ qua hiện tại và tất cả các sự kiện trong tương lai của từ

  • Thay thế: Thay thế sự xuất hiện hiện tại bằng từ đã sửa

  • Thay thế tất cả: Thay thế các sự kiện hiện tại và tất cả các lần xuất hiện bằng từ đã sửa

  • Thêm: Thêm từ vào Từ điển cá nhân của người dùng

>>> import wx
>>> from enchant.checker import SpellChecker
>>> from enchant.checker.wxSpellCheckerDialog import wxSpellCheckerDialog
>>>
>>> app = wx.PySimpleApp()
>>> text = "This is sme text with a fw speling errors in it. Here are a fw more to tst it ut."
>>> dlg = wxSpellCheckerDialog(None,-1,"")
>>> chkr = SpellChecker("en_US",text)
>>> dlg.SetSpellChecker(chkr)
>>> dlg.Show()
>>> app.MainLoop()

CMDLineChecker

Mô -đun

>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
7 cung cấp lớp
>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>cl
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']
8 có thể được sử dụng để kiểm tra tương tác chính tả của một số văn bản. Nó sử dụng đầu vào tiêu chuẩn và đầu ra tiêu chuẩn để tương tác với người dùng thông qua giao diện dòng lệnh. Mã bên dưới cho thấy cách tạo và sử dụng lớp này từ bên trong ứng dụng Python, cùng với một phiên kiểm tra mẫu ngắn:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
0

Như được hiển thị trong ví dụ đơn giản này, CMDLineChecker in từng lỗi mà nó gặp phải, cùng với một danh sách các thay thế được đề xuất. Người dùng nhập hành vi mong muốn bằng cách sử dụng các lệnh chữ và số ngắn, như được giải thích bằng đầu ra của lệnh ‘trợ giúp.

Mã thông báo: chia văn bản thành các từ

Một nhiệm vụ quan trọng trong việc kiểm tra chính tả là chia một cơ thể của văn bản thành các từ cấu thành của nó, mỗi từ sau đó được chuyển đến một đối tượng

>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.
0 để kiểm tra. Pyenchant cung cấp mô -đun
>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
0 để hỗ trợ nhiệm vụ này. Mục đích của mô -đun này là cung cấp chức năng mã thông báo phù hợp có thể được sử dụng để phân chia văn bản. Thông thường, tất cả những gì được yêu cầu là hàm
>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
1:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
1

Như được hiển thị trong ví dụ trên, hàm

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
1 lấy thẻ ngôn ngữ làm đầu vào và trả về một lớp mã thông báo phù hợp với ngôn ngữ đó. Việc khởi tạo lớp này với một số văn bản trả về một trình lặp sẽ mang lại các từ có trong văn bản đó. Đây chính xác là cơ chế mà lớp
>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
3 sử dụng nội bộ để chia văn bản thành một loạt các từ.

Các mục được tạo bởi tokenizer là bộ dữ liệu của biểu mẫu (từ, pos) trong đó từ là từ được tìm thấy và pos là vị trí trong chuỗi mà từ đó bắt đầu.

Chunkers

Trong nhiều ứng dụng, văn bản có thể kiểm tra có thể được xen kẽ với một số loại đánh dấu (ví dụ: thẻ HTML) không cần kiểm tra. Để có mã thông báo chỉ trả về những từ nên được kiểm tra, nó có thể được tăng cường với một hoặc nhiều chunker.

Một chunker chỉ đơn giản là một hàm mã thông báo đặc biệt chia văn bản thành các phần lớn thay vì mã thông báo cá nhân. Chúng thường được sử dụng bằng cách chuyển một danh sách các chunker cho chức năng

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
1:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
2

Khi

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
5 được áp dụng cho tokenizer, thẻ và nội dung của nó sẽ bị xóa khỏi danh sách các từ.

Hiện tại chunker duy nhất được triển khai là

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
5. Một chunker cho các tài liệu latex là trong công trình.

Bộ lọc

Trong nhiều ứng dụng, thông thường việc kiểm tra chính tả để bỏ qua các từ có một hình thức nhất định. Ví dụ: khi tự kiểm tra một email, thông thường bỏ qua các địa chỉ email và URL. Điều này có thể đạt được bằng cách tăng cường quá trình mã thông báo với các bộ lọc.

Một bộ lọc chỉ đơn giản là một trình bao bọc xung quanh một tokenizer có thể (1) thả một số từ nhất định từ luồng và (2) tiếp tục chia các từ thành phụ. Chúng thường được sử dụng bằng cách chuyển danh sách các bộ lọc cho chức năng

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
1:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
3

Khi

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
8 được áp dụng cho tokenizer, địa chỉ email sẽ bị xóa khỏi danh sách các từ.

Các bộ lọc hiện đang được triển khai là

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
8,
>>> pwl = enchant.request_pwl_dict("mywords.txt")
0 và
>>> pwl = enchant.request_pwl_dict("mywords.txt")
1.

Sử dụng pyenchant nâng cao

Nhà cung cấp

Mô hình lập trình cơ bản được cung cấp bởi thư viện Enchant dựa trên khái niệm của các nhà cung cấp. Nhà cung cấp là một đoạn mã cung cấp các dịch vụ kiểm tra chính tả mà Enchant có thể sử dụng để thực hiện công việc của mình. Các nhà cung cấp khác nhau tồn tại để thực hiện kiểm tra chính tả bằng cách sử dụng các khung khác nhau - ví dụ: có một nhà cung cấp ASPELL và nhà cung cấp MySpell.

Theo cách này, Enchant tạo thành một trình bao bọc của người Viking xung quanh các công cụ kiểm tra chính tả hiện có để cung cấp một giao diện lập trình chung.

Nhà cung cấp đang quản lý một đối tượng

>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.
0 cụ thể có thể được xác định bằng cách truy cập thuộc tính nhà cung cấp của nó. Đây là đối tượng
>>> pwl = enchant.request_pwl_dict("mywords.txt")
3 với các thuộc tính
>>> pwl = enchant.request_pwl_dict("mywords.txt")
4,
>>> pwl = enchant.request_pwl_dict("mywords.txt")
5 và
>>> pwl = enchant.request_pwl_dict("mywords.txt")
6:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
4

Môi giới

Các chi tiết mà nhà cung cấp được sử dụng để tạo một từ điển cụ thể được quản lý bởi một đối tượng

>>> pwl = enchant.request_pwl_dict("mywords.txt")
7. Các đối tượng như vậy có các phương thức tạo từ điển và kiểm tra xem một từ điển cụ thể có tồn tại hay không, như được hiển thị trong ví dụ dưới đây:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
5

Các nhà môi giới cũng có phương thức

>>> pwl = enchant.request_pwl_dict("mywords.txt")
8 xác định nhà cung cấp nào có sẵn và phương thức
>>> pwl = enchant.request_pwl_dict("mywords.txt")
9 liệt kê các từ điển có sẵn thông qua mỗi nhà cung cấp:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
6

Người môi giới mặc định

Trong sử dụng bình thường, chức năng được cung cấp bởi các nhà môi giới không hữu ích cho lập trình viên. Để làm cho công việc của lập trình viên dễ dàng hơn, Pyenchant tạo ra một đối tượng

>>> pwl = enchant.request_pwl_dict("mywords.txt")
7 mặc định và sử dụng nó bất cứ khi nào một người không được đưa ra một cách rõ ràng. Ví dụ, nhà môi giới mặc định được sử dụng khi tạo trực tiếp các đối tượng từ điển. Đối tượng này có sẵn là
>>> d2 = enchant.DictWithPWL("en_US","mywords.txt")
>>> d2.check("Hello")
True
1:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
7

Bạn có thể nhận thấy rằng các chức năng cấp cao nhất được cung cấp bởi mô-đun Enchant (chẳng hạn như

>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.
2,
>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.
1 và
>>> d = enchant.Dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "enchant/__init__.py", line 467, in __init__
    raise Error(err)
enchant.Error: No tag specified and default language could not be determined.
3) khớp với các phương thức được cung cấp bởi lớp
>>> pwl = enchant.request_pwl_dict("mywords.txt")
7. Trên thực tế, các chức năng này là các phương thức thể hiện của đối tượng
>>> pwl = enchant.request_pwl_dict("mywords.txt")
7 mặc định:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
8

Nhà cung cấp đặt hàng

Nhà cung cấp nào được sử dụng cho ngôn ngữ được xác định bởi lệnh của nhà cung cấp

>>> pwl = enchant.request_pwl_dict("mywords.txt")
7. Điều này có thể được thay đổi bằng phương pháp
>>> d2 = enchant.DictWithPWL("en_US","mywords.txt")
>>> d2.check("Hello")
True
8. Phương pháp này chấp nhận một thẻ ngôn ngữ và danh sách các tên nhà cung cấp được phân tách bằng dấu phẩy theo thứ tự mà chúng nên được kiểm tra. Một thẻ ngôn ngữ của Hồi*, có nghĩa là việc đặt hàng phải là mặc định cho tất cả các ngôn ngữ mà không được đặt hàng rõ ràng.

Ví dụ sau đây nói rằng đối với tiếng Anh Mỹ, nhà cung cấp MySpell nên được xét xử trước, tiếp theo là nhà cung cấp ASPELL. Đối với tất cả các ngôn ngữ khác, việc đặt hàng được đảo ngược:

>>> d = enchant.Dict()
>>> d.tag
'en_AU'
>>> print(d.tag)
en_AU
9

Người dùng cũng có thể đặt thứ tự ưa thích của họ bằng các tệp cấu hình Enchant. Vì lý do này, các lập trình viên ứng dụng không được khuyến khích thiết lập đơn đặt hàng một cách rõ ràng trừ khi có một lý do thuyết phục để làm như vậy.

Mở rộng Enchant.Tokenize

Như đã giải thích ở trên, mô -đun

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
0 cung cấp khả năng chia văn bản thành các từ thành phần của nó. Việc triển khai hiện tại chỉ dựa trên các quy tắc cho ngôn ngữ tiếng Anh và do đó có thể không hoàn toàn phù hợp với ngôn ngữ bạn chọn. May mắn thay, thật đơn giản để mở rộng chức năng của mô -đun này.

Để thực hiện thói quen mã hóa mới cho thẻ ngôn ngữ, chỉ cần tạo một lớp/mã hóa chức năng trong mô -đun Enchant.Tokenize .. Hàm này sẽ tự động được phát hiện bởi hàm mô -đun

>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
1 và được sử dụng khi thích hợp. Cách dễ nhất để thực hiện điều này là sao chép mô -đun
>>> from enchant.checker import SpellChecker
>>> chkr = SpellChecker("en_US")
>>> chkr.set_text("This is sme sample txt with erors.")
>>> for err in chkr:
...     print("ERROR:", err.word)
...
ERROR: sme
ERROR: txt
ERROR: erors
1 và sửa đổi nó cho phù hợp với nhu cầu của bạn.

Tác giả sẽ rất biết ơn các thói quen token hóa cho các ngôn ngữ khác ngoài tiếng Anh có thể được kết hợp trở lại vào phân phối pyenchant chính.