可视化文本分类

6
假设我有一个由单词组成的句子,其中每个单词(或字符)都有一个相关的数字值或颜色。例如,这可能来自于RNN情感分类器,它会产生类似于下面的东西: enter image description here 我正在寻找一种轻量级的方式,在Jupyter中使用Python可视化句子中的单词/字符。是否有一种优雅的方法可以在笔记本中内联完成这个任务?我大多数情况下看到的是使用额外的JavaScript在单独的HTML文件中完成的。请注意,我只需要静态可视化。我看到你可以改变每个字母的字体颜色,但我更喜欢仅操作背景颜色(填充?),同时保持文本为黑色。我只是不确定这被称为什么。
1个回答

1

不确定是否有首选方法来实现这一点;这里是一个快速的方法,使用一个小的html模板和IPython.display.display_html

from IPython.display import display_html

def to_html(text, r, g, b):
    return "<var style='background-color:rgb({}, {}, {});'>{} </var>".format(
        r, g, b, text
    )

example = "A quick brown fox jumps over the lazy dog.".split()
res = ''.join(to_html(word, *np.random.randint(0,256,size=3)) for word in example)
display_html(res, raw=True)

导致结果如下所示:

<var style='background-color:rgb(144, 237, 221);'>A </var><var style='background-color:rgb(28, 208, 84);'>quick </var><var style='background-color:rgb(142, 241, 214);'>brown </var><var style='background-color:rgb(67, 199, 115);'>fox </var><var style='background-color:rgb(121, 120, 116);'>jumps </var><var style='background-color:rgb(251, 46, 48);'>over </var><var style='background-color:rgb(128, 147, 44);'>the </var><var style='background-color:rgb(48, 215, 5);'>lazy </var><var style='background-color:rgb(239, 90, 48);'>dog. </var>


1
谢谢!这实际上相当不错。对于Python 2,只需进行轻微修改:return "<var style='background-color:rgb(%(r)s, %(g)s, %(b)s);'>%(text)s </var>" % {"text":text,"r":r,"g":g,"b":b} - Alex R.
对,或者可以使用 str.format 来兼容 Python 2 和 Python 3。 - hilberts_drinking_problem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接