首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >作为文本分类器的特征,我如何实现(Brown)文本的聚类表示?

作为文本分类器的特征,我如何实现(Brown)文本的聚类表示?
EN

Stack Overflow用户
提问于 2020-06-20 13:43:54
回答 1查看 110关注 0票数 0

我正在尝试为一系列的评论文本(SemEval,2014年)实现布朗集群的一个版本。我正在使用Owoputi等人(2013年)的twitter集群,它们如下所示:

代码语言:javascript
运行
复制
0000    ijust   1446
0000    i   17071657
0000    -i  4254
000100  iyou    41
000100  #innowayshapeorform 41

其中位字符串指示集群,并且有1000个集群。

我已经提取到字典中,在字典中,我将相关的位字符串作为键,并将令牌的列表作为值。

{'0000': ['ijust', 'i', '-i'], '000100': ['iyou', #innowayshapeorform] ...}

我只是遗漏了如何对文本进行热编码,将字典键映射到向量(一维数组)中的索引的部分:

这样,如果文本中出现一个单词,而该单词发生在集群中,则群集的值将从0更改为1。

例如one_hot_vector = *3

  • 集群1(向量指数= 0):'I','me','my',‘my’
  • 集群2(向量指数= 1):‘爱’,‘喜欢’,‘想要’,‘需要’
  • 集群3(向量指数= 2):‘狗’,‘宠物’,‘猫’,‘小狗’

文字1:我讨厌猫

文本1矢量表示: 1,0,1

课文2:狗爱我

文本2矢量表示: 1,1,1

课文3:我梦到羊

文本3矢量表示: 1,0,0

这个例子有3个集群--我拥有的集群长度应该是1000维。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-21 07:33:41

你的问题很难破译,所以让我把它正规化。到目前为止,我所了解的是:

您想要将给定的字符串映射到一维数组的a.

  • You list字典d中,如果text包含d[key]== 0或其他任何一个== 0,则将cluster映射到a中的cluster位置ix列表中,对应于a中的某些key

以下解决方案看起来很优雅:

代码语言:javascript
运行
复制
keys = sorted(d.keys())
def text2vec(text):
    words = text.lower().split()
    return [
        int(any(
            (d[key] in word) for word in words
        )) for key in keys
    ]

测试示例:

代码语言:javascript
运行
复制
test_text = "did ijust atealldonuts"
token = text2vec(test_text)
assert 1 == token[keys.index("ijust")]
assert 0 == token[keys.index("i")]

如果我弄错了,请改进你的问题,特别是一个热点部分。

不确定DictVectorizer将如何帮助您,因为它会转换字典,而您希望转换一段文本。(基本上,DictVectorizer从它的json恢复数据。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62486626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档