【发布时间】:2020-11-15 11:19:12
【问题描述】:
我需要创建一个函数,该函数将字符串列表作为输入,每个字符串都是一本书内容的字符串。输出需要是一个 2D np 计数数组,其中行是输入字符串中的书籍,列是“全局词汇表”中所有单词的计数。因此,如果两个字符串是输入并且它们有 50 个唯一词,则矩阵的形状将是 (2,50)。
我有一个以前的代码,它获取一个字符串列表,并按照词典编纂者的顺序从字符串的唯一单词中创建一个字典,命名为我被允许使用的词汇,我只是不知道如何打开这个字典成一个矩阵。
这是我目前所拥有的,但它不起作用,因为“列表索引必须是整数或切片而不是 str”:
def feature(strings):
import numpy as np
array_dict = global_vocab(strings)
i = 0
for i in range(len(strings)):
names = strings[i]
matrix = np.array([array_dict[i] for i in names])
print (matrix)
所以如果输入它 ["这是字符串一", "这是字符串二"] 该函数应该返回数组
1 1 1 1 0
1 1 1 0 1
我还使用了这些以前的代码:
def word_count(book):
try:
from collections import defaultdict
file = book.lower().split()
my_dict = defaultdict(int)
for item in file:
if len(item)>2:
my_dict[item] += 1
return my_dict
except FileNotFoundError:
return None
def global_vocab(strings):
from collections import defaultdict
my_dict = []
i = 0
for i in range(len(strings)):
words = strings[i]
sentences = word_count(words)
my_dict.extend(sentences)
return sorted(my_dict)
【问题讨论】:
-
您能发布一个输入示例,以及输出应该是什么样子的示例吗?
-
你不需要做 i = 0
-
您的 global_vocabulary 返回什么类型的数据?也许你应该尝试像 array_dict = [*global_vocabulary(strings)] 或者去掉括号
-
@MattHowell 我添加了输入和输出的样子
-
@Kaiyaha global_vocabulary 返回字符串中所有唯一单词的字典,我不需要包含此函数我只是认为它会简化过程
标签: python numpy dictionary