我有两个用户名列表,我想计算Jaccard相似度.可能吗?
该线程显示了如何计算两个字符串之间的Jaccard相似度,但是我想将其应用于两个列表,其中每个元素是一个单词(例如,用户名).
就像标题所暗示的那样,当我在PyCharm或Intellij中使用Distraction Free模式时,我看不到行号,即使我在设置中勾选了"行号"框.有没有办法让线号出现在Distraction Free模式下?
我正在使用Linux(Ubuntu),如果这有帮助(我看到一个Mac图片,其中行显示在Distraction Free模式),我的PyCharm版本是2016.2.3.
这是这个问题的延续。
我正在使用以下代码从集合中查找C_a文本包含单词的所有文档StackOverflow,并将它们存储在另一个名为 的集合中C_b:
import pymongo
from pymongo import MongoClient
client = MongoClient('127.0.0.1') # mongodb running locally
dbRead = client['C_a'] # using the test database in mongo
# create the pipeline required
pipeline = [{"$match": {"$text": {"$search":"StackOverflow"}}},{"$out":"C_b"}] # all attribute and operator need to quoted in pymongo
dbRead.C_a.aggregate(pipeline) #execution
print (dbRead.C_b.count()) ## verify count of the new collection
Run Code Online (Sandbox Code Playgroud)
这很有效,但是,如果我为多个关键字运行相同的代码段,结果会被覆盖。例如,我想收集C_b包含包含关键字的所有文件StackOverflow,StackExchange以及Programming。为此,我只需使用上述关键字迭代代码段。但不幸的是,每次迭代都会覆盖前一次。
问题:如何更新输出集合而不是覆盖它?
另外:是否有避免重复的聪明方法,或者我必须在事后检查重复吗?
我正在使用 Google 的Document AI训练模型。训练失败并出现以下错误(为简单起见,我仅包含 JSON 文件的一部分,但该错误对于数据集中的所有文档都是相同的):
"trainingDatasetValidation": {
"documentErrors": [
{
"code": 3,
"message": "Invalid document.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "INVALID_DOCUMENT",
"domain": "documentai.googleapis.com",
"metadata": {
"num_fields": "0",
"num_fields_needed": "1",
"document": "5e88c5e4cc05ddb8.json",
"annotation_name": "INCOME_ADJUSTMENTS",
"field_name": "entities.text_anchor.text_segments"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我从这个错误中了解到的是,模型期望该字段INCOME_ADJUSTMENTS在文档中(至少)出现一次,但它发现它的实例为零。
这是可以理解的,除非我已经INCOME_ADJUSTMENTS在模式中将该字段定义为“可选一次”,即该字段可以出现零次或一次。
我错过了什么吗?尽管该错误已在架构中得到解决,但为什么该错误仍然存在?
ps 我还尝试过“可选多个”(以及“必需一次”和“必需多个”),但错误仍然存在。
编辑:根据要求,以下是其中一个 JSON 文件的样子。请注意,此处没有 PII,因为详细信息(姓名、SSN 等)是合成数据。
我有一个url列表:file_url_list,打印到这个:
www.latimes.com, www.facebook.com, affinitweet.com, ...
Run Code Online (Sandbox Code Playgroud)
还有另一个Top 1M url的列表:top_url_list,打印到这个:
[1, google.com], [2, www.google.com], [3, microsoft.com], ...
Run Code Online (Sandbox Code Playgroud)
我想找到多少网址中file_url_list都在top_url_list.我写了下面的代码,但我知道这不是最快的方法,也不是最蟒蛇的方法.
# Find the common occurrences
found = []
for file_item in file_url_list:
for top_item in top_url_list:
if file_item == top_item[1]:
# When you find an occurrence, put it in a list
found.append(top_item)
Run Code Online (Sandbox Code Playgroud)
我怎样才能以更高效,更pythonic的方式写出来?
我已经使用.bz2文件很长时间了。要将.bz2文件解压缩/解压缩到特定文件夹中,我一直在使用以下功能:
destination_folder = 'unpacked/'
def decompress_bz2_to_folder(input_file):
unpackedfile = bz2.BZ2File(input_file)
data = unpackedfile.read()
open(destination_folder, 'wb').write(data)
Run Code Online (Sandbox Code Playgroud)
最近,我获得了带有.xz(不是.tar.xz)和.zst扩展名的文件的列表。我较差的研究技能告诉我,前者是lzma2压缩,后者是压缩Zstandard。
但是,我找不到将这些档案的内容解压缩到一个文件夹中的简单方法(就像我对这些文件所做的那样.bz2)。
我怎么能够:
.xz(lzma2)文件的内容解压缩到文件夹中吗?.zst(Zstandard)文件的内容解压缩到文件夹中吗?重要说明:我正在解压缩非常大的文件,因此,如果该解决方案考虑到任何潜在的Memory Errors,那就太好了。
我有一个包含以下整数的 numpy 数组:
[10 30 16 18 24 18 30 30 21 7 15 14 24 27 14 16 30 12 18]
Run Code Online (Sandbox Code Playgroud)
我想将它们标准化为 1 到 10 之间的范围。
我知道规范化数组的一般公式是:
但是我应该如何在 1 到 10 之间缩放它们?
问题:将此数组规范化为 1 到 10 之间的值的最简单/最快的方法是什么?
我正在使用 Plotly 的散点图来可视化多个数据集。
这是我的代码的一部分。下面,我创建了 scatterpolo 实例:
go.Scatterpolar(
r=[dataset_dataframe['word_count'].median(),
dataset_dataframe['char_count'].median(),
dataset_dataframe['capitals'].median(),
dataset_dataframe['num_exclamation_marks'].median(),
dataset_dataframe['num_punctuation'].median()],
name=dataset_name,
theta=['No. of Words', 'No. of Characters', 'No. of Capitals', 'No. of Exclamation Marks', 'No. of Punctuations'],
fill='toself',
line=dict(color='brown'),
subplot=subplot_name),
)
Run Code Online (Sandbox Code Playgroud)
我在这里将其放入布局中:
fig.update_layout(
polar=dict(
radialaxis=dict(visible=True, )),
title='Dataset Statistics')
Run Code Online (Sandbox Code Playgroud)
我对多个数据框执行此操作,这使我可以轻松比较它们。结果很简洁,如下所示:
不幸的是,似乎 的范围theta是使用每个散点实例的最大值自动计算的r。
这不好,因为为了轻松比较数据集,我需要theta所有绘图都处于相同的范围内。
问题:如何将 的范围设置theta为自定义值,例如从 1 到 100?
我想逐行搜索一个特定单词的文件,但我想确保这个特定的单词前面跟着一个空格.
我知道我必须使用正则表达式来做到这一点.我一直在阅读这本指南,但令我感到困惑的是如何在同一个声明中同时应用前瞻和后瞻.
我怎样才能做到这一点?
counter = 0
out = open('out.txt', 'w')
with open(original_db, 'r') as db:
for line in db:
if re.search(word, line, re.IGNORECASE):
counter += 1
out.write(line)
print("Entries found for word: " + str(counter))
Run Code Online (Sandbox Code Playgroud) 我有一个约3000项的清单.我们称之为listA.另有一份包含1,000,000件物品的清单.我们称之为listB.
我想查看listA属于多少项listB.例如,得到一个像这样的答案436.
显而易见的方法是使用嵌套循环查找每个项目,但这很慢,特别是由于列表的大小.
什么是最快和/或Pythonic方式来获取一个列表的项目的数量属于另一个?
python ×7
python-3.x ×6
compression ×1
line-numbers ×1
list ×1
lzma ×1
mongodb ×1
numpy ×1
phpstorm ×1
plotly ×1
pycharm ×1
pymongo ×1
regex ×1
scatter-plot ×1
search ×1
similarity ×1
zstandard ×1