当前位置:  开发笔记 > 人工智能 > 正文

重新包装硬包装文本的算法?

如何解决《重新包装硬包装文本的算法?》经验,为你挑选了0个好方法。

假设我为我所工作的公司编写了一个自定义电子邮件管理应用程序.它从公司的支持帐户中读取电子邮件,并将清理后的纯文本版本存储在数据库中,执行其他整洁的操作,例如将其与客户帐户和流程中的订单相关联.当员工回复邮件时,我的程序会生成一封电子邮件,该电子邮件使用格式化的讨论主题版本发送给客户.如果客户响应,则应用程序在主题行中查找唯一编号以读取传入消息,删除先前的讨论,并将其添加为线程中的新项目.例如:

This is a message from Contoso customer service.

Recently, you requested customer support. Below is a summary of your 
request and our reply.

--------------------------------------------------------------------
Contoso (Fred) on Tuesday, December 30, 2008 at 9:04 a.m.
--------------------------------------------------------------------
John:

I've modified your address. You can confirm my work by logging into
"Your Account" on our Web site. Your order should ship out today.

Thanks for shopping at Contoso.

--------------------------------------------------------------------
You on Tuesday, December 30, 2008 at 8:03 a.m.
--------------------------------------------------------------------
Oops, I entered my address incorrectly. Can you change it to

Fred Smith
123 Main St
Anytown, VA 12345

Thanks!

--
Fred Smith
Contoso Product Lover

一般来说,这一切都很好,但有一个领域我现在推迟清理一段时间,它处理文本包装.为了生成如上所述的漂亮的电子邮件格式,我需要重新包装客户最初发送的文本.

我编写了一个执行此操作的算法(虽然查看代码,但我不完全确定它是如何工作的 - 它可以使用一些重构).但它无法区分硬包装换行符,"段落结尾"换行符和"语义"换行符.例如,硬包装换行符是电子邮件客户端在段落中插入以包装长行文本(例如,79列)的换行符.段落换行符的结尾是用户在段落中的最后一个句子之后添加的行.语义换行符就像br标记一样,例如Fred在上面输入的地址.

我的算法只会在连续的两行中看到一个新的段落,因此它会使客户的电子邮件格式如下:

Oops, I entered my address incorrectly. Can you change it to

Fred Smith 123 Main St Anytown, VA 12345

Thanks!

-- Fred Smith Contoso Product Lover

每当我尝试编写一个可以按照预期重新包装此文本的版本时,我基本上都会碰到一个问题,我需要知道文本的语义,"硬包装"换行符和"我真正的意思"之间的区别它就像一个br" - 类型的换行符,例如在客户的地址中.(我连续使用两个换行符来确定何时开始一个新段落,这与大多数人似乎实际输入电子邮件的方式一致.)

任何人都有一个可以按预期重新包装文本的算法?或者,在权衡任何给定解决方案的复杂性时,这种实现是否"足够好"?

谢谢.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有