Почему Talon?
Цепочки писем накапливают цитируемые ответы, которые засоряют фактическое содержимое. При программной обработке писем вам нужно только новое сообщение, а не вся история беседы. Talon решает эту проблему путем извлечения чистого содержимого ответа через сложное сопоставление паттернов и структурный анализ.Варианты использования
- AI агенты электронной почты: извлеките новые сообщения пользователя без обработки всей истории цепочки
- Автоматизация электронной почты: разберите ответы для выявления действенного содержимого
- Анализ цепочки: создавайте потоки беседы путем изоляции отдельных вкладов
- Управление входящим ящиком: обрабатывайте только новую информацию из ответов
Почему выбрать Talon?
Поддержка HTML электронной почты
Обрабатывает HTML структуры Gmail, Outlook, Apple Mail, Thunderbird
Высокая точность
Успешность 93,8% на 64 реальных тестовых случаях
Многоязычность
Поддерживает английский, японский, шведский, польский, голландский, немецкий языки
Быстрая производительность
Среднее время обработки 1,92 мс, 488 писем/сек
Как работает Talon
Talon использует два дополняющих друг друга подхода в зависимости от формата письма:Обработка простого текста (6-этапный конвейер)
- Классификация строк: назначает маркеры каждой строке (‘t’=текст, ‘m’=маркер цитирования, ‘s’=разделитель, ‘e’=пусто)
- Сопоставление паттернов: применяет regex к последовательностям маркеров для выявления цитируемых блоков
- Извлечение содержимого: удаляет цитируемые строки и возвращает чистый текст
- Стандартные маркеры цитирования (
>) - Заголовки ответов (“On [date] [name] wrote:”)
- Индикаторы переадресации (“-----Original Message-----“)
Обработка HTML (8-этапный конвейер)
- Удаление структуры: непосредственно удаляет известные элементы цитирования (div Gmail, blockquotes, разметка Outlook)
- Резервная точка контроля: для нестандартного HTML, сопоставляет элементы текстовым строкам, применяет текстовые паттерны, удаляет соответствующий HTML
Системы обработки
Удаление цитирования (первичное)- Удаляет цитируемые ответы из цепочки
- Не требует инициализации
- Сопоставление паттернов на основе правил
Начало работы
Установите Talon
Установите через pip с требуемым обходным решением для Python 3.11+:
pip install talonПримените обходное решение для Python 3.11+
Требуемое исправление для зависимости cchardet:# Import workaround BEFORE importing talonimport sysimport chardetsys.modules['cchardet'] = chardet# Now safe to import talonimport talonfrom talon import quotationsЭто обходное решение необходимо для Python 3.11+.
Извлеките содержимое ответа
Базовое использование для простого текста и HTML:
from talon import quotationsemail = """Great work on the project!On Mon, Apr 11, 2011 at 6:54 PM, Bob wrote:> Can you review the document?> Need feedback by Friday."""clean_reply = quotations.extract_from_plain(email)# Result: "Great work on the project!"Производительность и точность
Talon был протестирован на 64 реальных письмах от различных клиентов и языков.Итоговые результаты тестирования
| Метрика | Значение |
|---|---|
| Всего тестов | 64 письма |
| Прошли | 60 (93,8%) |
| Не прошли | 4 (6,2%) |
| Ср. время обработки | 1,92 мс |
| Пропускная способность | 488,6 писем/сек |
| Мин/макс время | 0,13 мс - 21,55 мс |
Охват тестирования
- 22 HTML письма: Gmail, Outlook, Apple Mail, Thunderbird, Mail.ru, Hotmail
- 42 письма в простом тексте: различные форматы и стили ответов
- 6+ языков: английский, японский, шведский, польский, голландский, немецкий
- Мобильные клиенты: iPhone, Android “Sent from” подписи
Время обработки по сложности
| Тип письма | Ср. время | Сложность |
|---|---|---|
| Простой текстовый ответ | 0,2-0,5 мс | Низкая |
| HTML Gmail/Outlook | 2-4 мс | Средняя |
| Сложные цепочки | 4-22 мс | Высокая |
Компромисс скорость vs точность
| Библиотека | Ср. время обработки | Точность | Лучше всего для |
|---|---|---|---|
| Talon | 1,92 мс | 93,8% | Производственные системы, требующие поддержку HTML |
| qutoequail | 0,96 мс | ~85% | Требования умеренной точности |
| Custom regex | 0,1 мс | ~70% | Простой простой текст, критична скорость |
Известные ограничения
Talon не прошел 4 из 64 тестовых случаев. Вот что не сработало:Неудачные тестовые случаи (всего 4)
Неудачные тестовые случаи (всего 4)
Тестовый случай 1: сложная цепочка писем со смешанным содержимым
Ввод:Christopher Edwards)Результат Talon: возвращает все письмо, включая цитируемый текст, начинающийся с “On Mon, Jun 3…” и весь ”> цитируемый текст”Время обработки: 2,55 мсПроблема: размещение подписи перед цитатами запутывает логику обнаруженияТестовый случай 2: встроенные ответы
Ввод:I will reply under this one и and under this.)Результат Talon: возвращает все, включая заголовок “On Tue, Apr 29…” и все цитируемые строкиВремя обработки: 0,48 мсПроблема: перемешанные встроенные ответы не распознаны как паттерн ответаТестовый случай 3: Gmail Forward HTML
Ввод:testblah (до маркера переадресации)Результат Talon: включает ”---------- Forwarded message ----------” и переадресованное содержимоеВремя обработки: 3,41 мсПроблема: заголовки HTML переадресации не удаляются при обнаружении цитирования GmailТестовый случай 4: Thunderbird Forward HTML
Ввод:moz-forward-container не признанИтого: 3 из 4 неудач — это переадресованные сообщения. Обычные ответы работают с точностью 98%+.
Примеры успеха
Примеры успеха
Пример 1: простой ответ Gmail
Ввод:Awesome! I haven't had another problem with it.Время обработки: 0,2 мсЧто сработало: обнаружен стандартный паттерн “On [date] [name] wrote:”, распознан маркер цитирования (>)Пример 2: ответ Outlook с разделителем
Ввод:Outlook with a reply directly above lineВремя обработки: 0,51 мсЧто сработало: строка разделителя Outlook (подчеркивания) и заголовки “From:”/“Sent:” обнаружены как разделительПример 3: HTML ответ Outlook
Ввод:ReplyВремя обработки: 4,02 мсЧто сработало: ID span Outlook OLK_SRC_BODY_SECTION обнаружен и удален структурноПроизводительность vs более простые альтернативы
Производительность vs более простые альтернативы
Компромисс: Talon более всеобъемлющий, но медленнее, чем библиотеки только для простого текста
- Talon: среднее 1,92 мс (с поддержкой HTML)
- email-reply-parser: среднее 0,03 мс (только простой текст)
Переадресованные сообщения
Переадресованные сообщения
Как показано в результатах тестирования, переадресованные сообщения (особенно HTML) являются сложными:
- Переадресации простого текста: обычно работают хорошо
- HTML переадресации: могут сохранять заголовки переадресации
- Обходное решение: используйте извлечение простого текста или постобработку для удаления маркеров переадресации
Обработка ошибок
Всегда обрабатывайте потенциальные ошибки разбора:Рекомендации тестирования
Всегда тестируйте со своими конкретными форматами писем:Версия JavaScript
Для проектов TypeScript/JavaScript используйте TalonJS — портирование Talon на JavaScript с аналогичной функциональностью.Сравнение производительности
| Решение | Точность | Скорость | Лучше всего для |
|---|---|---|---|
| Python Talon | 93,8% | 1,92 мс | Высочайшая точность |
| TalonJS | 90,6% | 1,88 мс | Проекты TypeScript/Node.js |
Быстрый старт
Извлеките ответы
import * as talon from 'talonjs';const email = `Great work on the project!On Mon, Apr 11, 2011 at 6:54 PM, Bob wrote:> Can you review the document?> Need feedback by Friday.`;const result = talon.quotations.extractFromPlain(email);const cleanReply = result.body.trim();// Output: "Great work on the project!"