2011-09-26 45 views
3

我正在嘗試爲我的網站構建一個帶有頻繁條款的字典。所以基本上我會從我的數據庫中檢索一個段落,並且這個段落很可能會包含出現在上述字典中的術語。我正在尋找的是解析段落文本並將可能出現在該文本中的字典術語與字典條目進行映射的一種好方法(也是快速的)。使用python解析文本並映射到字典單詞

有沒有一個Python模塊可以幫助我完成這項任務?我不是在尋找某種奇特的東西,但它一定很快。

感謝

+0

您是否在尋找完全匹配,尊重字邊界? I.如果你的物品是'foo',你想在'confoobulation'中找到它嗎? –

+0

噢。我以前應該清除它。我正在尋找完全匹配。因此,如果在詞典中有一個詞「foo」,則只應將詞「foo」與文本(而不是「foobar」或「confoobulation」)進行匹配。 –

回答

2

像這樣的事情?

>>> s = "abc def, abcdef" 
>>> w = {"abc": "xxx", "def": "yyy"} 
>>> def replace(text, words): 
...  regex = r"\b(?:" + "|".join(re.escape(word) for word in words) + r")\b" 
...  reobj = re.compile(regex, re.I) 
...  return reobj.sub(lambda x:words[x.group(0)], text) 
... 
>>> replace(s, w) 
'xxx yyy, abcdef' 

請注意,這隻有在所有字典的鍵以字母(或數字或下劃線)開頭和結尾的情況下才能可靠地工作。否則,字邊界不匹配。

+0

太棒了!這看起來很完美。非常感謝:) –