Как повысить производительность функции разбора текста? - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь отделить год сбора винограда от названий вин.Я надеюсь получить примерно 50% точности с кодом ниже, но хотел бы улучшить это, если это возможно.Кто-нибудь знает, что я могу сделать, чтобы улучшить точность?

Примеры заголовков и возвращаемый год их разбора:

Quinta dos Avidagos 2011 Avidagos Red (Douro) -> 0 incorrect
Rainstorm 2013 Pinot Gris (Willamette Valley) -> 2011 incorrect
Louis M. Martini 2012 Cabernet Sauvignon -> 2012 correct
Mirassou 2012 Chardonnay (Central Coast) -> 2012 correct

Код, который я внедряю:

from dateutil.parser import parse
from datetime import datetime, timezone

df = "my pandas dataframe with wine titles"
dt = datetime.now()
dt.replace(tzinfo=timezone.utc)

year_parse = []
for i in range(len(df['title'])):
    try:
        ans = parse(df.title[i], fuzzy=True).year
        year_parse.append(int(ans))
    except:
        ans = 0
        year_parse.append(int(ans))

Оченьблагодарен за любые предложения!

1 Ответ

0 голосов
/ 16 декабря 2018

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

import re
exp = re.compile(r'\d{4}')
year_parse = list()
for name in df['title']:
      year = exp.findall(name)[0]
      year_parse.append(year)

year_parse получил весь год в списке.

...