如何通过分割连续的字符串来获得有意义的单词?

时间:2014-12-31 06:18:38

标签: python string split

我正在尝试解析特定的html响应。我已经以连续字符串的形式从页面中成功提取了文本。

例如:

  睡鼠的故事睡鼠的故事曾经有三个小姐妹,他们的名字是艾尔西·拉西和蒂莉,他们住在一口井的底部   块引用

我的第一个问题是我需要拆分字符串以获得单个单词 例如:

  

storyOnce

应将

转换为有意义的单词列表......

  

[在,...,故事,一旦,...]

我还需要摆脱" \ n"字符。我尝试使用

  

.strip

但它似乎不起作用。我认为我可能以错误的方式使用它。 我是新手所以请详细说明答案。这将有所帮助。

4 个答案:

答案 0 :(得分:3)

你可能想要text segmentation。从旧的链接我收藏this似乎为您完成任务。您也可以使用NLTK segmentation

答案 1 :(得分:3)

要删除\n字符,只有在字符串的开头和结尾处才会有效。

如果您最终在split分割

,则可以使用\n代替并在不使用\n的情况下附加字符串

对于你的初始问题,因为文本完全与你提取它一样,我要做的就是首先分割空间

string.split(' ')

将提供类似

的内容
[The, Dormouse's, storyThe, Dormouse's, storyOnce, upon, a, time,...]

然后您可以使用智能算法进行一些简单的字典映射,如下所示:

迭代结果列表:

  • 使用字典或某些NLP库来检查匹配(例如故事匹配'故事' - 所以它应该分开 - 你可以再做一次检查其余的' The'存在于字典也是'
  • 尝试巧妙地忽略不在字典中的名称。一些NLP库可以帮助解决这个问题。

这是text segmentation问题,因此您需要使用某种形式的自然语言处理来进行标记化和文本提取。

@WannaBeCoder下面建议NLTK平台并在此预订: http://www.nltk.org/book/

玩得开心,这很有挑战性和酷感!

答案 2 :(得分:1)

我正在创建一个类似的程序。我使用.split()从句子创建了一个单词列表。并将其与字典进行比较。然后是未知的单词。我使用二进制映射并创建了所有可能的块组合。然后从这些组合中我分离了独特的块。并将其与字典进行比较。现在我有了所有可能的组合,包括来自字典的单词中的未知单词和部分。我比较了两个未知单词的每个可能的块组合,这样我就有了最少的可能(块的数量 - 字典中的单词数量)。

但我的方法很耗时。并且存在像'loveisnowhere'这样模棱两可的问题。

答案 3 :(得分:0)

import re
ans = ""
for a in re.findall('[A-Z][^A-Z]*',"The Dormouse's storyThe Dormouse's storyOnce upon a time there were three little sisters and their names wereElsie LacieandTillie \nand they lived at the bottom of a well Blockquote"):
   ans+=a.strip()+' '

ans
"The Dormouse's story The Dormouse's story Once upon a time there were three little sisters and their names were Elsie Lacieand Tillie \nand they lived at the bottom of a well Blockquote "