根据他们的朋友和用户名在不同的数据集中查找相同的用户

Finding same users in different datasets based on their friends and usernames

假设有两个数据库,其中存储了人们的用户名和网络(关注者和关注者)。两个数据库都包含下表:

       Users        |      Relation
------------------------------------------
- id (Primary Key)  | - id (Primary Key)
- username (unique) | - follower_id (Foreign key references users id)
                    | - following_id (Foreign key references users id)

假设两个数据集中的一些用户名相同,一些用户名在另一个数据库中不存在,一些用户名不同但指的是同一个人。此外,他们的网络具有相似的趋势,但可能略有不同。

是否有任何已知或建议的方法来对用户名及其网络进行一些相似性处理,以便将它们与其他数据库中的配置文件相关联,或者与 None 相关联(如果没有)?

我在 python 工作,但任何伪代码、一般答案或关于如何解决此问题的想法就足够了。

如果我没理解错的话,你有两个数据库。其中之一是用户,另一个是网络。所以如果 follower_id 和 following_id 相等,你想合并这些数据。

如果您有两个数据框,您可以使用 left on 和 right_on 轻松组合它们。

  pd.merge(
    df_users, 
    df_relations,
    how='outer', 
    left_on='id', 
    right_on='relative_id',

  )

假设其中一位用户没有亲戚,那么让我们使用how='outer'

将他们作为Nan包含在结果中

如果您想编写 SQL 查询,只需简单地使用“=”即可。

SELECT * from user
FULL OUTER JOIN info
ON user.id = relative.id

首先你必须在两个数据库中使用用户名模糊搜索。让我们调用此方法 List getFuzzyName(id) 您将获得 'probably the same person names' 的列表 接下来使用相同的模糊搜索 getFuzzyName(follower_id) 和 getFuzzyName(following_id) 并获得一些匹配的朋友。 这里 getFuzzyName 在没有优化的情况下具有 O(n^2) 复杂度,因为您需要将来自 db1 的每个朋友与来自 d​​b2 的每个朋友进行比较。 DB1和DB2的这个数字大于某个限制的人极有可能是同一个人。