识别语料库中每个文档唯一的单词的更好方法
Better way to identify words that are unique to each document in a corpus
我创建了一个小型测试语料库:
words = ["he she why fun", "you are why it", "believe it or stop", 'hello goodbye it', 'i goodbye']
print(len(words))
我正在尝试创建一个字典,其中键作为唯一词,值作为它们来自的文档。所以我创建了这个例程:
count = 0
while count < len(words):
for word in words[count].split():
p = " ".join(words[0:count]) + " " + " ".join(words[count+1:len(words)])
if word not in p.split():
dc[word] = count
count += 1
print(dc)
{'he': 0, 'she': 0, 'fun': 0, 'you': 1, 'are': 1, 'believe': 2, 'or': 2, 'stop': 2, 'hello': 3, 'i': 4}
这行得通,但很笨重。有没有什么方法可以使用计数向量化器、TF-IDF 或一些 Spacy 函数来做到这一点?我也担心可读性,即字典格式看起来不太好。
您可以通过将事物收集到集合中并丢弃集合中已有的事物来简化此过程。
dc = dict()
seen = set()
for index, sentence in enumerate(words):
for word in sentence.split():
if word in seen:
if word in dc:
del dc[word]
else:
seen.add(word)
dc[word] = index
print(dc)
我想您可以尝试将 set 与 dict 混为一谈,但我认为有两个单独的变量更清晰,并且对于重要数据量可能更有效。
另请注意使用 enumerate
来跟踪您在项目循环中的位置。
我创建了一个小型测试语料库:
words = ["he she why fun", "you are why it", "believe it or stop", 'hello goodbye it', 'i goodbye']
print(len(words))
我正在尝试创建一个字典,其中键作为唯一词,值作为它们来自的文档。所以我创建了这个例程:
count = 0
while count < len(words):
for word in words[count].split():
p = " ".join(words[0:count]) + " " + " ".join(words[count+1:len(words)])
if word not in p.split():
dc[word] = count
count += 1
print(dc)
{'he': 0, 'she': 0, 'fun': 0, 'you': 1, 'are': 1, 'believe': 2, 'or': 2, 'stop': 2, 'hello': 3, 'i': 4}
这行得通,但很笨重。有没有什么方法可以使用计数向量化器、TF-IDF 或一些 Spacy 函数来做到这一点?我也担心可读性,即字典格式看起来不太好。
您可以通过将事物收集到集合中并丢弃集合中已有的事物来简化此过程。
dc = dict()
seen = set()
for index, sentence in enumerate(words):
for word in sentence.split():
if word in seen:
if word in dc:
del dc[word]
else:
seen.add(word)
dc[word] = index
print(dc)
我想您可以尝试将 set 与 dict 混为一谈,但我认为有两个单独的变量更清晰,并且对于重要数据量可能更有效。
另请注意使用 enumerate
来跟踪您在项目循环中的位置。