我有如下数据。数据是一组相似的句子,但中间很少有独特的词,如 TABLEA、TABLEB 等。
java.sql.SQLException: [Teradata Database] [TeraJDBC 15.10.00.22] [Error 3523] [SQLState 42000] The user does not have SELECT access to TABLEA
java.sql.SQLException: [Teradata Database] [TeraJDBC 15.10.00.22] [Error 3523] [SQLState 42000] The user does not have SELECT access to TABLEC
java.sql.SQLException: [Teradata Database] [TeraJDBC 15.10.00.22] [Error 3523] [SQLState 42000] The user does not have SELECT access to TABLEB
Dataframe read is null
Dataframe read is null
java.sql.SQLException: [Teradata Database] [TeraJDBC 15.10.00.22] [Error 3807] [SQLState 42S02] Object Y does not exist.
java.sql.SQLException: [Teradata Database] [TeraJDBC 15.10.00.22] [Error 3807] [SQLState 42S02] Object Z does not exist.
java.sql.SQLException: [Teradata Database] [TeraJDBC 15.10.00.22] [Error 2652] [SQLState HY000] Operation not allowed: TABLEK is being Loaded.
java.sql.SQLException: [Teradata Database] [TeraJDBC 15.10.00.22] [Error 9804] [SQLState HY000] Response Row size or Constant Row size overflow.
java.sql.SQLException: [Teradata JDBC Driver] [TeraJDBC 15.10.00.22] [Error 1000] [SQLState 08S01] Login failure for Connection to xxx.xx.xx.xx Tue Dec 04 02:49:47 MST 2018
问题陈述: 我想对数据进行分组/集群,并为每个组/集群提供一个唯一的编号。
假设:
- 应该基于相似性形成组/集群。相似的句子应该归为一组
- 这应该是无监督学习。如果将来出现一些与现有集群不太相似的新句子,它应该创建一个新的组/集群。
- 句子可以是任意长度
- 句子之间的常用词可以出现在任何地方——字符串的开头、中间、结尾等等
- 单词的顺序很重要
输出:
虽然我确实得到了抽象形式的问题陈述,但我不知道具体的方法。
到目前为止,我已经阅读了使用余弦相似度等各种算法的文本聚类,但我不确定这是否足以满足这个问题陈述。这里的主要问题之一是,它是无监督的。如果有任何相似度非常低的新句子,那么它应该创建一个新组。
大图是这样的
获取所有未分类/未分类的列表(我在这里可以互换使用,因为我不确定它属于哪一个)语句
检查维度表,通过使用一些相似性阈值进行匹配(对此不清楚)。
如果相似度匹配高于阈值,则什么也不做
如果相似度较低,则在维度表中创建一个新组,其中包含常用词的描述列。
我还没有确定解决这个问题的最佳方法是什么。请推荐一些算法或方法来解决这个问题。
