2011-05-17 112 views
4

我正在寫分析電子郵件應用程序,它會爲我節省大量的時間,如果我可以使用Python庫,將解析電子郵件文本分解成一個名爲組件,如<salutation><body><signature><reply text>如何解析電子郵件文本,如<salutation><body><signature><reply text>等?

例如,下面的文字「Hi Dave,\nLets meet up this Tuesday\nCheers, Tom\n\nOn Sunday, 15 May 2011 at 5:02 PM, Dave Trindall wrote: Hey Tom,\nHow about we get together ...」將被作爲

Salutation: "Hi Dave,\n" 
Body: "Lets meet up this Tuesday\n" 
Signature: "Cheers, Tom\n\n" 
Reply Text: "On Sunday, 15 May 2011 at 5:02 PM, Dave Trindal wrote: ..." 

我知道有這類問題,做很好的近似,將有助於沒有完美的解決方案,但即使是庫解析。我在哪裏可以找到一個?

+1

是標準mbox格式的電子郵件嗎? http://docs.python.org/library/mailbox.html – tMC 2011-05-17 01:13:37

+0

號目前他們在一個MySQL表的文本字段,但是格式化成MBOX格式之前,如果需要的話就不會了解析將是一個非常隨意的一步? – Trindaz 2011-05-17 01:26:48

回答

4

https://github.com/Trindaz/EFZP

這提供了原來的問題提出的功能,再加上合理的識別電子郵件區域,因爲它們通常出現在由普通的電子郵件客戶端如Outlook和Gmail英語母語者寫電子郵件。

1

想到第一種方法(不一定是最好的......)將是通過使用分割開始。這裏的代碼之類的東西一點點

linearray = emailtext.split(「\ n」) 現在你有一個字符串數組,每個人就像一個段落或任何

所以linearray [0]將包含致敬

決定回覆文本開始的位置有點棘手,我注意到在它之前有一個雙換行符,所以也許從後面搜索它,並希望最後一個指示開始的回覆文字。

或者存儲一些您可能期待的簽名詞,並從前面搜索那些詞,如歡呼聲,問候等。

一旦你找出其中的簽名是剩下的就是剩下的就是容易

希望這有助於

3

如果你的分數基於該類型的詞包含每一行,你可能會得到一個相當好的指示。

E.G.在開頭附近有問候語的一條線是稱呼語(也可以有稱呼過去式的短語,例如上次見到你很高興)

身體通常會包含諸如「電影,音樂會」等等。它還包含動詞(去,跑,走等)和問題標記和提供(例如,我們希望,我們可以,我們應該喜歡..)。 退房http://nodebox.net/code/index.php/Linguistics#verb_conjugation http://ogden.basic-english.org/ http://osteele.com/projects/pywordnet/

簽名將包含關閉的話。

如果您發現具有您想要的結構消息的數據源,您可以進行一些頻率分析以查看每個單詞在每個部分中出現的頻率。

每個單詞將得到一個分數[稱呼得分,身體得分,簽名得分,..] 例如,你好可能會發生900次的稱呼,10次的身體和3次的簽名。 這意味着你好會得到分配[900,10,3,..] 歡呼聲可能被分配[10,3,100,..]

現在你將有一個大約500,000字的大名單。 沒有大範圍的單詞無用。 例如catch可能有[100,101,80 ..] =範圍21 (趕上來很好,想要釣到一條魚,以後再抓到你)。捕捉可能發生在任

現在你可以減少單詞的數量減少到約10000

現在每行,給行的得分形式也[稱呼得分,比分體,簽名比分,..]

這個分數是通過添加每個單詞的矢量分數來計算的。

例如句子「你好,歡呼聲給我你的號碼」可以是: [900,10,3,...] + [10,3,100,..] + .. + .. + = [900 + 10 + .., 10 + 3 + ..,3 + 100,..] = [1023,900,500,..]說

那麼因爲最大的數字是在開始時的敬語得分位置,這句話是一種稱呼。

那麼,如果你有得分您的一條線路,看看行應該是什麼成分,你會增加其得分

運氣好每一個字,總是有計算複雜性之間的權衡和準確性。如果你能夠找到一組好的單詞,並建立一個好的模型來爲你計算基礎,這將有所幫助。

相關問題