Size: a a a

Natural Language Processing

2020 January 09

R

Rodion in Natural Language Processing
David (ddale) Dale
Если нужно не просто сравнивать предложения, а быстро искать ближайших соседей, то нужно всё предложение превратить в вектор (среднее из словных эмбеддингов, либо какой-нибудь sentence encoder, типа laser), и положить эти векторы в какую-нибудь искалку соседей (типа kdtree или hnsw)
Хм, а всякие расстояния Левенштейна и подобные методы плохо использовать?
источник

DK

Denis Kirjanov in Natural Language Processing
Rodion
Хм, а всякие расстояния Левенштейна и подобные методы плохо использовать?
они не учитывают семантику -- а кажется, что близость по оквэду меряется скорее смыслом, чем символьной схожестью строк
источник

D(

David (ddale) Dale in Natural Language Processing
Denis Kirjanov
они не учитывают семантику -- а кажется, что близость по оквэду меряется скорее смыслом, чем символьной схожестью строк
Всё верно, а ещё расстояние Левенштейна ломается, если поменять два слова местами. "оргтехника и комплектующие" будет очень непохожим на "комплектующие и оргтехника".
источник

R

Rodion in Natural Language Processing
David (ddale) Dale
Всё верно, а ещё расстояние Левенштейна ломается, если поменять два слова местами. "оргтехника и комплектующие" будет очень непохожим на "комплектующие и оргтехника".
В той же fuzzy_wuzzy решают эту проблему, вроде как.
Но отсутствие сравнения по смыслу - серьезная проблема, да.
источник

AD

Alfredo Diezo in Natural Language Processing
fuzzy wuzzy вроде как раз и выдает не метрику: d(a,b) != d(b,a) по строкам у него
источник

DK

Denis Kirjanov in Natural Language Processing
Alfredo Diezo
fuzzy wuzzy вроде как раз и выдает не метрику: d(a,b) != d(b,a) по строкам у него
там есть token_sort_ratio
но в любом случае, мерять символы как схожесть -- плохая история для смысла
источник

AD

Alfredo Diezo in Natural Language Processing
Denis Kirjanov
там есть token_sort_ratio
но в любом случае, мерять символы как схожесть -- плохая история для смысла
Да, согласен
источник

M

Mairna in Natural Language Processing
всем привет! какие ваши любимые способы векторизации для кластеризации коротких текстов? хочется, чтобы вектора не были гигантскими, но при этом когда берешь окно и юзаешь эмбеддинги, то слишком сильно триггерится на порядок слов. Складывать (+усреднять? хотя, вроде, в случае Kmeans усреднение не имеет смысла, так как исползуется евклидово расстояние)? Поделитесь опытом, плиз.
источник

D(

David (ddale) Dale in Natural Language Processing
Mairna
всем привет! какие ваши любимые способы векторизации для кластеризации коротких текстов? хочется, чтобы вектора не были гигантскими, но при этом когда берешь окно и юзаешь эмбеддинги, то слишком сильно триггерится на порядок слов. Складывать (+усреднять? хотя, вроде, в случае Kmeans усреднение не имеет смысла, так как исползуется евклидово расстояние)? Поделитесь опытом, плиз.
K-means над L2-нормализованной суммой словных fasttext эмбеддингов - вполне норм. Мне ещё помогло складывать эмбеддинги с весами, зависящими от части речи. Или можно брать сразу sentence embeddings,  laser тоже вполне норм.
Если текстов очень много (и k-means медленноват), можно предварительно birch'ем сделать мелкокластеры.
источник

M

Mairna in Natural Language Processing
David (ddale) Dale
K-means над L2-нормализованной суммой словных fasttext эмбеддингов - вполне норм. Мне ещё помогло складывать эмбеддинги с весами, зависящими от части речи. Или можно брать сразу sentence embeddings,  laser тоже вполне норм.
Если текстов очень много (и k-means медленноват), можно предварительно birch'ем сделать мелкокластеры.
спасибо большое!) попробую
источник

CT

Cookie Thief in Natural Language Processing
Mairna
всем привет! какие ваши любимые способы векторизации для кластеризации коротких текстов? хочется, чтобы вектора не были гигантскими, но при этом когда берешь окно и юзаешь эмбеддинги, то слишком сильно триггерится на порядок слов. Складывать (+усреднять? хотя, вроде, в случае Kmeans усреднение не имеет смысла, так как исползуется евклидово расстояние)? Поделитесь опытом, плиз.
Use только так залетает
источник

CT

Cookie Thief in Natural Language Processing
И сверху кластеризовалка какая-нибудь
источник

M

Mairna in Natural Language Processing
Cookie Thief
Use только так залетает
спасибо, попробую тоже
источник

PI

Petr Ivanov in Natural Language Processing
dmitriy ushakov
У меня есть наименование оквэда, например "продажа оргтехники и комплектующих" и есть продолжение "продажа принтера и установка", нужно понять насколько схожи эти две предложения
оквэда сам по себе группирует похожие темы. поверх него можно сделать модель, которая будет мерять «расстояние»
источник

A

Alexander in Natural Language Processing
Добрый день! У меня один вопрос тут назрел. Есть звонки клиентов и агентов (уже переведенные в текст). Я пытаюсь найти обещания, которые дал агент клиенту в каждом звонке.
Я уже сделал восстановление пунктуации. Но есть много предложений, которые не имеют никакого смысла (просто набор не связанных слов). Хотелось бы удалить такие предложения. Интересно, какой подход лучше для этой задачи?
Мои идеи:
• tf idf и word2vec для создания векторов из всех предложений. После этого мы можем сделать что-то вроде anomaly detection, то есть искать и удалять векторы, которые сильно отклонены от большинства других векторов.
• Спам-фильтры. Может быть, можно применить спам фильтры для этой задачи?
• Ещё одна идя: cоздать образец речевых тегов, которые должно включать правильное предложение. Например, любое хорошее предложение должно включать существительное + глагол. Или мы можем использовать, например, dependency tokens из spacy.
Был бы рад услышать ваши идеи или коменты к моим!
источник

AF

Anton F in Natural Language Processing
Alexander
Добрый день! У меня один вопрос тут назрел. Есть звонки клиентов и агентов (уже переведенные в текст). Я пытаюсь найти обещания, которые дал агент клиенту в каждом звонке.
Я уже сделал восстановление пунктуации. Но есть много предложений, которые не имеют никакого смысла (просто набор не связанных слов). Хотелось бы удалить такие предложения. Интересно, какой подход лучше для этой задачи?
Мои идеи:
• tf idf и word2vec для создания векторов из всех предложений. После этого мы можем сделать что-то вроде anomaly detection, то есть искать и удалять векторы, которые сильно отклонены от большинства других векторов.
• Спам-фильтры. Может быть, можно применить спам фильтры для этой задачи?
• Ещё одна идя: cоздать образец речевых тегов, которые должно включать правильное предложение. Например, любое хорошее предложение должно включать существительное + глагол. Или мы можем использовать, например, dependency tokens из spacy.
Был бы рад услышать ваши идеи или коменты к моим!
Можно взять какую-нибудь модель языка (например, https://github.com/mgrankin/ru_transformers) и считать perplexity для предложений из текста. Для бессмысленных предложений perplexity будет значительно выше, чем для осмысленных и связных предложений.
источник

DK

Denis Kirjanov in Natural Language Processing
Alexander
Добрый день! У меня один вопрос тут назрел. Есть звонки клиентов и агентов (уже переведенные в текст). Я пытаюсь найти обещания, которые дал агент клиенту в каждом звонке.
Я уже сделал восстановление пунктуации. Но есть много предложений, которые не имеют никакого смысла (просто набор не связанных слов). Хотелось бы удалить такие предложения. Интересно, какой подход лучше для этой задачи?
Мои идеи:
• tf idf и word2vec для создания векторов из всех предложений. После этого мы можем сделать что-то вроде anomaly detection, то есть искать и удалять векторы, которые сильно отклонены от большинства других векторов.
• Спам-фильтры. Может быть, можно применить спам фильтры для этой задачи?
• Ещё одна идя: cоздать образец речевых тегов, которые должно включать правильное предложение. Например, любое хорошее предложение должно включать существительное + глагол. Или мы можем использовать, например, dependency tokens из spacy.
Был бы рад услышать ваши идеи или коменты к моим!
Нет гарантии, что в устной речи хорошие для Вас предложения синтаксически стройны

Я бы вручную разметил предложения (кстати, детекция на предложения хорошая ли? Работает на устной речи?) на хорошие и плохие и сначала сам бы подумал, как их отличить человеку
источник

A

Alexander in Natural Language Processing
Anton F
Можно взять какую-нибудь модель языка (например, https://github.com/mgrankin/ru_transformers) и считать perplexity для предложений из текста. Для бессмысленных предложений perplexity будет значительно выше, чем для осмысленных и связных предложений.
Спасибо. Тексты у меня на английском, поэтому надо брать наверное чуть другой гитхаб https://github.com/huggingface/transformers.
источник

A

Alexander in Natural Language Processing
Denis Kirjanov
Нет гарантии, что в устной речи хорошие для Вас предложения синтаксически стройны

Я бы вручную разметил предложения (кстати, детекция на предложения хорошая ли? Работает на устной речи?) на хорошие и плохие и сначала сам бы подумал, как их отличить человеку
Да, детекция на предложения работает хорошо на устной речи.
источник

М

Михаил in Natural Language Processing
Если я правильно понимаю, это задача классификации из класса: "выделение определённых типов предложений из текста". Она похожа на функциональность, которая недавно добавили в outlook и cisco webex: выделение предложений, которые содержат указания/задачи, e.g. "Вам необходимо зарегистрироваться на сайте конференции". Встречали ли вы русские модели/датасеты или толковые английские статьи/модели для решения таких задач?
источник