Nltk: Разделение предложений не удается в некоторых угловых случаях

Созданный на 26 авг. 2019  ·  3Комментарии  ·  Источник: nltk/nltk

Я понимаю, насколько сложно разбивать предложения, содержащие сокращения, и что добавление сокращений может иметь подводные камни, как это хорошо объясняется в # 2154. Однако я наткнулся на несколько угловых случаев, о которых хотел бы спросить. Похоже, что используется любое из следующих

  • например
  • т.е.
  • и другие.

в предложении неправильно разбивает предложение.

Пример для ie и eg

>>> sentence = ("Even though exempli gratia and id est are both Latin "
                "(and therefore italicized), no need to put e.g. or i.e. in "
                "italics when they’re in abbreviated form.")
>>> sent_tokenize_list = sent_tokenize(sentence)                                                                                                                           

>>> sent_tokenize_list                                                                                                                                            
['Even though exempli gratia and id est are both Latin (and therefore italicized), no need to put e.g.',
 'or i.e.',
 'in italics when they’re in abbreviated form.']

Пример для и др.

>>> from nltk.tokenize import sent_tokenize
>>> sentence = ("If David et al. get the financing, we can move forward "
                "with the prototype. However, this is very unlikely be cause "
                "they did not publish sufficiently last year.")
>>> sent_tokenize_list = sent_tokenize(sentence)
>>> sent_tokenize_list
['If David et al.',
 'get the financing, we can move forward with the prototype.',
 'However, this is very unlikely because they did not publish sufficiently last year.']

На моем ноутбуке я использую nltk.__version__ 3.4.5.

На мой взгляд, эта проблема отличается от № 2154, потому что это хорошо известные и часто используемые сокращения (особенно в академических кругах).

nice idea tokenizer

Самый полезный комментарий

Быстрый взлом, следующий # 2154

>>> import nltk
>>> punkt = nltk.data.load('tokenizers/punkt/english.pickle')
>>> punkt._params.abbrev_types.add('al')
>>> text = 'If David et al. get the financing, we can move forward with the prototype. However, this is very unlikely be cause they did not publish sufficiently last year.'
>>> punkt.tokenize(text)
['If David et al. get the financing, we can move forward with the prototype.', 
'However, this is very unlikely be cause they did not publish sufficiently last year.']

Но, возможно, было бы неплохо иметь улучшенный токенизатор предложений (# 2008, # 1214), подобный тому, что мы сделали со словом tokenizer (# 2355).

Например, мы можем легко преобразовать nltk.corpus.nonbreaking_prefixes в punkt._params.abbrev_types в качестве первого шага.

Все 3 Комментарий

Быстрый взлом, следующий # 2154

>>> import nltk
>>> punkt = nltk.data.load('tokenizers/punkt/english.pickle')
>>> punkt._params.abbrev_types.add('al')
>>> text = 'If David et al. get the financing, we can move forward with the prototype. However, this is very unlikely be cause they did not publish sufficiently last year.'
>>> punkt.tokenize(text)
['If David et al. get the financing, we can move forward with the prototype.', 
'However, this is very unlikely be cause they did not publish sufficiently last year.']

Но, возможно, было бы неплохо иметь улучшенный токенизатор предложений (# 2008, # 1214), подобный тому, что мы сделали со словом tokenizer (# 2355).

Например, мы можем легко преобразовать nltk.corpus.nonbreaking_prefixes в punkt._params.abbrev_types в качестве первого шага.

Я собирался добавить проблему в этом роде, но увидел, что вы меня опередили. Если / когда люди решат это исправить, я бы посоветовал просмотреть список латинских сокращений здесь:
https://en.wikipedia.org/wiki/List_of_Latin_abbreviations

Технически говоря, эти аббревиатуры в их полностью написанной, не сокращенной форме представляют _множественные выражения_ (_MWEs_), не так ли? Я имею в виду, хорошо, технически они (также) представляют фиксированные _фразовые шаблоны_, но это не меняет их статус MWE, поэтому мне интересно, может ли # 2202 помочь с этой проблемой (хотя я чувствую, что ответ сводится к "Нет ") 🤔

(PS, забавные факты: «и др.» Является юридическим сокращением слова «и др.», А «и др.» - юридическим сокращением слова «и т. Д.»)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги