Найти - Пользователи
Полная версия: Программа по выделению слов
Начало » Python для новичков » Программа по выделению слов
1
jeyzihno
Добрый день, появилась необходимость написать программу для выделения слов.
Скажем, что у меня есть строка допустим такая ‘55anywayвлюбомслучае56introduceпредставлять’ в которой есть английские, русские слова и буквы.
Мне необходимо выделить оттуда английские и русские слова чтобы в итоге получить отдельно. Например ‘anyway - в любом случае’.
Подскажите что использовать? Какие методы или функции?
AD0DE412
тыц
Romissevd
Можешь регулярные выражения использовать.
py.user.next
jeyzihno
Скажем, что у меня есть строка допустим такая ‘55anywayвлюбомслучае56introduceпредставлять’ в которой есть английские, русские слова и буквы.
Мне необходимо выделить оттуда английские и русские слова чтобы в итоге получить отдельно. Например ‘anyway - в любом случае’.
Общий подход такой:
  
>>> import re
>>> import string
>>> 
>>> def get_tokens(text):
...     pat = r'[a-z]+[а-яё]+'
...     out = re.findall(pat, text)
...     return out
... 
>>> def split_token(text):
...     eng, rus = [], []
...     for ch in text:
...         if ch in string.ascii_lowercase:
...             eng.append(ch)
...         else:
...             rus.append(ch)
...     out = (''.join(eng), ''.join(rus))
...     return out
... 
>>> text = '55anywayвлюбомслучае56introduceпредставлять'
>>> 
>>> tokens = get_tokens(text)
>>> tokens
['anywayвлюбомслучае', 'introduceпредставлять']
>>> 
>>> splitted = tuple(map(split_token, tokens))
>>> splitted
(('anyway', 'влюбомслучае'), ('introduce', 'представлять'))
>>>

То есть ты как бы постепенно данные упрощаешь и упрощаешь, очищаешь и очищаешь. В итоге у тебя получается то, что тебе надо.

В одной функции всё не делай. Это как торт есть. Можно пытаться его весь такой вкусный в рот затолкать, а можно от него по кусочку отрезать и спокойно съесть его весь и вообще не перепачкаться.

Тоже обрати внимание, что каждое действие может делаться разными способами и ты эти способы можешь подбирать, но делать это можно только тогда, когда всё это разделено по кусочкам. Тогда каждый кусочек ты и можешь переделать на какой-то другой лад, который тебе удобен или который сам по себе лучше работает.

В частности первая лексема (лексема = token) содержит слитное словосочетание “влюбомслучае”, так вот его не так просто разделить. Но так как у нас эта часть выделена в свой кусочек, мы можем её дальше направить на какой-то целый айсберг кода, который проведёт полный языковой анализ (семантику, морфологию и так далее) и вернёт это словосочетание разделённым. При этом остальные части наших данных никакого айсберга не требуют и уже готовы. Всё это происходит правильно и точно только потому, что всё разделено на кусочки. Каждый кусочек обрабатывается своим набором кода, который никакого отношения к другим кусочкам данных не имеет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB