pyspellchecker: не разбивать URL - PullRequest
2 голосов
/ 09 марта 2020

Я попытался настроить автозамену с помощью pyspellchecker в Python. В целом, он работает, однако в настоящее время он также разбивает URL-адреса, что на самом деле нежелательно. Код выглядит следующим образом:

from spellchecker import SpellChecker

spell = SpellChecker()
words = spell.split_words("This is my URL https://test.com")
test = [spell.correction(word) for word in words]

Это приводит к следующему: ['This', 'is', 'my', 'URL', 'steps', 'test', 'com']

Что мне нужно изменить, чтобы все URL-адреса не исправлялись автоматически?

Ответы [ 3 ]

2 голосов
/ 09 марта 2020

Если вы используете базовый str.split для разбиения предложения на слова в каждом пробеле, это сработает (вы потеряете функциональность разделения слов, разделенных чем-либо, кроме пробелов)

from spellchecker import SpellChecker

spell = SpellChecker()
words = str.split("This is my URL https://test.com")
test = [spell.correction(word) for word in words]

Вывод:

['This', 'is', 'my', 'usl', 'https://test.com']

1 голос
/ 09 марта 2020

NLTK * TweetTokenizer правильно токенизирует URL-адреса, хэштеги и смайлики.

>>> from nltk.tokenize import TweetTokenizer
>>> tknzr = TweetTokenizer()
>>> tknzr.tokenize(s)
['This', 'is', 'my', 'URL', 'https://test.com']

NLTK поставляется с самыми современными устройствами. примитивы токенизации слова. Я предлагаю вам использовать NLTK, чтобы превратить вашу строку в слова перед фильтрацией для автокоррекции. Вы можете использовать служебные программы части речи в NLTK, чтобы определить, какие вещи должны быть автоматически исправлены.

1 голос
/ 09 марта 2020

Вы можете определить свой собственный токенайзер, который вы передадите классу SpellChecker, чтобы он разделялся только на пробелы (или что-либо еще):

from spellchecker import SpellChecker

def splitter(words):
    return words.split(" ")    # split on whitespace

spell = SpellChecker(tokenizer=splitter)
words = spell.split_words("This is my URL https://test.com")
test = [spell.correction(word) for word in words]

РЕДАКТИРОВАТЬ: К вашему сведению, причина, по которой он ведет себя так, заключается в том, что похоже, что токенизатор по умолчанию использует это регулярное выражение для разделения текста на слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...