4作者: eigenvalue8 天前
几个月前,我出于兴趣对生物学和遗传学产生了浓厚的兴趣。<p>这很大程度上受到了 Sydney Brenner 的工作的启发,这也成为了我 brennerbot.org 项目的基础。<p>特别是,我对噬菌体产生了极大的兴趣,噬菌体是攻击细菌的病毒。它们是生物学中最接近“基本粒子”的东西:最小的遗传密码单元,它们做一些有用的事情,从而能够繁殖和传播。<p>它们还具有一些令人难以置信的特性,比如它们的结构以某种方式编码了一个二十面体。<p>我一直想知道这些东西的 DNA 是如何在物理世界中转化为几何形状的。ACGT 的“数字”领域,进而映射到 20 个氨基酸(以 3 个为一组),与 3D 模拟形状的世界之间的映射,对我来说仍然是神奇而神秘的。<p>我想更深入地研究这个主题,但不是通过阅读枯燥的教科书。我想以一种有形的方式来了解这些噬菌体。噬菌体的主要类型有哪些?它们在遗传密码的长度和结构方面如何相互比较?它们呈现的物理结构是什么样的?<p>我决定编写一个程序,以交互的方式探索所有这些东西。<p>因此,我非常高兴地向您展示我的开源噬菌体探索者:<p>phage-explorer.org<p>我可能有点过头了,因为我最终得到的东西消耗了大量的 token 来生成,并产生了大约 15 万行 Typescript 和 Rust/Wasm 代码。<p>它实现了 23 个分析算法,超过 40 个可视化,并包含了 24 种不同噬菌体类型的完整遗传数据和 3D 结构。<p>实际上,要让它在浏览器中良好运行需要大量的工程技术;它包含的数据量非常惊人(当你查看一些 3D 结构模型时,这一点就显而易见了)。<p>它在移动设备上运行良好,但如果您想获得完整的体验,我强烈建议您在高分辨率的桌面浏览器上打开它。<p>据我所知,这是目前关于噬菌体最完整的信息/教育软件。现在,我首先要承认的是,我并不是这方面的专家,甚至对这些东西都不太了解。<p>所以,如果你是生物学专家,请看一看,告诉我你对我的作品有什么看法!如果我有什么错误,请在 GitHub Issues 中告诉我,我会修复它:<p><a href="https://github.com/Dicklesworthstone/phage_explorer" rel="nofollow">https://github.com/Dicklesworthstone/phage_explorer</a>
1作者: pigon10028 天前
我正在构建一个开源学习管理系统(LMS),并使用 OpenSearch 的 more_like_this 查询和字符 n-gram 来进行相似度评分,从而添加了剽窃检测功能。 简单来说,当学生提交答案时,我会搜索其他学生在同一问题上的相似答案。效果还行,但感觉有点“黑客”——只是重用了我已有的搜索引擎。 目前的设置如下: ``` search = cls.search().filter( "nested", path="answers", query={"term": {"answers.question_id": str(question_id)}} ) search = search.query( "nested", path="answers", query={ "more_like_this": { "fields": ["answers.answer"], "like": text, "min_term_freq": 1, "minimum_should_match": "1%", } }, ) # 获取前 10 个结果,然后在 Python 中重新排序 def normalize(t): return re.sub(r"\s+", "", t.strip()) def char_ngrams(t, n=3): return set(t[i:i+n] for i in range(len(t)-n+1)) norm_text = normalize(text) text_ngrams = char_ngrams(norm_text) for hit in response.hits: norm_answer = normalize(hit.answer) answer_ngrams = char_ngrams(norm_answer) intersection = len(text_ngrams & answer_ngrams) union = len(text_ngrams | answer_ngrams) ratio = int((intersection / union) * 100) if ratio >= 60: # 标记为相似 ``` 约束条件: * 仅限自托管,不使用外部 API * 学生人数为几千人 * 希望操作简单,反正已经运行了 OpenSearch 问题: * 这种方法合理吗?或者我遗漏了什么显而易见的东西? * 其他自托管系统使用什么方法?我查阅了 Moodle 的文档,但他们的剽窃插件大多调用外部服务 * 有人尝试过不需要 GPU 的轻量级机器学习模型吗? 搜索引擎方法有效,但想知道是否有更适合我们约束条件的更好方法。
1作者: stefanpie8 天前