我想做情绪分析,并在python中创建了SVM模型,该模型使用点(坐标(绘制矢量,但仅适用于数值。我想把一个句子映射到一个向量上。示例:"食物非常美味"转换为(a,b(坐标,表示一个句子是+ve还是-ve。有没有办法把句子转换成向量。
看看NLTK
from nltk.tokenize import sent_tokenize, word_tokenize
data = "All work and no play makes jack a dull boy, all work and no play"
print(word_tokenize(data))
这将输出:
['All', 'work', 'and', 'no', 'play', 'makes', 'jack', 'dull', 'boy', ',', 'all', 'work', 'and', 'no', 'play']
更多信息可在此处找到:https://pythonspot.com/tokenizing-words-and-sentences-with-nltk/
然后你需要把这些单词变成数字——最简单的方法就是简单地使用它们的索引。
tokens = (word_tokenize(data))
indexes = [idx for idx in range(len(tokens))]
不,我们需要归一化,使数字在0和1之间。
indexes = indexes / Len(indexes)
现在我们可以使用tensorflow将这些索引转换为向量。
vector = tf.convert_to_tensor(
indexes, dtype=tf.float)
)
请注意,在使用张量后,您需要对数据进行反规范化,如下所示:
Indexes = indexes * Len(indexes)
把它变成一个词:
tokens[x]
其中,X是要检索的单词的索引。