gpt4 book ai didi

php - 获取MySQL数据库中重复次数最多的相似字段

转载 作者:行者123 更新时间:2023-11-29 02:03:04 25 4
gpt4 key购买 nike

假设我们有这样一个数据库:

Actions_tbl:

--------------------------------------------------------id | Action_name                              | user_id|--------------------------------------------------------1  |  John reads one book                     | 1     2  |  reading the book by john                | 13  |  Joe is jumping over fire                | 24  |  reading another book                    | 25  |  John reads the book in library          | 16  |  Joe read a    book                      | 27  |  read a book                             | 38  |  jumping with no reason is Ronald's habit| 3 

Users_tbl:

-----------------------user_id |    user_name |-----------------------1       |     John2       |     Joe3       |     Ronald4       |     Araz-----------------------

Wondering if I can choose the most repeated similar action regardless of it's user and replace my own user_name with its current user!

Read one book, reading the book, reading another book, read the book in library, read a book and read a book are the ones who have most common WORDS so the staffs related to reading the book is repeated 6 times, my system should show one of those six sentences randomly and replace Araz with user_name

Like: Araz reads the book

My Idea was to

select replace(a.action_name , b.user_name) from actions_tbl a, user_tble b where a.user_id = b.user_id group_by

然后在php中使用一个一个检查相似性

levenshtein()

但是这个完全没有性能!

假设我想对一个大数据库和几个不同的表做同样的事情。这会毁掉我的服务器!!!

有更好的想法吗?

http://www.artfulsoftware.com/infotree/queries.php#552这 levenshtein() 函数作为 MySQL 函数实现,但首先,您认为它具有足够的性能吗?然后,如何在我的案例中使用它?也许自连接面包车可以解决这个问题,但我对 sql 不是很好!

* 相似 Action ,是常用词超过X%的 Action


** 更多信息和注释:**

  1. 我仅限于 PHP 和 MySQL。

  2. 这只是一个例子,在我的真实项目中, Action 是长段落。这就是为什么性能很重要。真实场景是:用户输入了几个项目的项目描述,这些数据可能太相似了(用户可能有相同的工作领域),我想自动填充(基于以前的填充)下一个项目的描述,以节省时间。

  3. 如果您能提供任何实用解决方案,我将不胜感激。我查了NLP相关的解决方案,虽然很有趣,但是我认为很多都不是很准确,可以用PHP实现。

  4. 与所有其他项目一样,输出应该是有意义的并且是一个合适的段落。这就是为什么我想从以前的选择中选择。


感谢您的智慧回答,如果您能对情况有所了解,我们将不胜感激

最佳答案

你说的是一个文本聚类过程。你试图找到相似的文本片段,并任意选择其中的一个。我不熟悉执行这种形式的文本挖掘的任何数据库。

对于您所描述的内容,一种非常基本的文本挖掘技术可能会奏效。使用除用户名以外的所有词创建术语文档矩阵。然后使用奇异值分解得到最大的奇异值和向量(这是相关矩阵的第一主成分)。类似的事件应该沿着这条线聚集。

如果您的词汇量有限并且表格中有术语,您可以通过重叠的单词比例来衡量两个 Action 之间的距离。你有 Action 中所有单词的列表吗?

关于php - 获取MySQL数据库中重复次数最多的相似字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11538409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com