教程

将普通语言转换为筛选查询

简介

使用 Twitter 高级运算符构建规则以筛选推文 Firehose 是为平台获取正确数据的关键。应用是否能够生成有意义的分析或见解取决于是否能接收到它所需的确切数据,而你的筛选规则则是影响该平衡的关键。Twitter 高级运算符为定义流中的内容提供了广泛的选择 - 选项包括匹配简单的关键词以及指定特定的用户属性、用户位置、语言等,所有这些都使用复杂的布尔逻辑来完成。

在定义传递所需数据的规则时,最大的一个挑战是获取以普通语言表达的要求,并将其精确地转换为运算符和筛选语法。在本文中,我们将获取用英语阐述的规则,并使用适当的高级运算符和语法将它们转换为筛选规则。

示例 1

“I want Tweets discussing the Tesla Model 3.”(我想要获取讨论特斯拉 Model 3 的推文。)

最容易的着手点是使用简单关键词“tesla”。但是,这仅仅是一个起点 - 它肯定会让我们获得提及“tesla”的所有推文,但实际上它并不具备针对性。它还将匹配讨论特斯拉线圈或尼古拉·特斯拉及其与托马斯·爱迪生的较量的推文,而不是匹配讨论汽车的推文。可通过以下两种主要方法更精确地定位对话:

  1. 添加其他积极关键词要求
  2. 指定要排除的特定关键词。

添加其他积极关键词通常可以更显著地提高准确度,因此我们从这里开始。这相当简单 - 我们将“tesla”的匹配项加上一个还会出现精确匹配的短语“model 3”的限制。表示这种情况的筛选规则如下所示:

tesla "model 3"

对短语“model 3”使用双引号会将它转换为精确的短语匹配 - 只有当该精确短语在文本中按此顺序出现时,推文才会匹配。

但你可能已经注意到,用户也使用“model-3”或“model three”而不是“model 3”来指代该车型。如果你还想考虑到这种情况,则可以使用以下规则:

tesla ("model 3" OR "model-3" OR "model three" )

在这里,我们使用了分组和布尔 OR 逻辑。上述规则翻译为,当推文中包含“tesla”,并且包含“model 3”、“model-3”或“model three”中的任一一项时,该推文将匹配。

你可以对此概念进行进一步扩展 - 假设你只想获取使用“angry”、“happy”或“love”等情绪性关键词的这类推文,则可使用“and any of these”逻辑添加这些词作为一个附加组。

tesla ("model 3" OR "model-3" OR "model three" ) (angry OR happy OR love)

现在,我们的规则比最初的 tesla 规则要更具针对性。但是,如果特定类型的提及以某种方式设法满足你已指定的要求,你可能需要更大的信心来排除它们。

为此,你只需要通过在认为不需要的提及类型前面放置一个 - 字符来排除这些类型即可。 

tesla ("model 3" OR "model-3" OR "model three" ) (angry OR happy OR love) -nikola -edison -coil -coils

请注意: 最佳做法是不要使用 OR 逻辑和括号将否定运算符组合在一起。相反,应分别进行单独否定。例如,不要将上述否定组合在一起,如下所示

-(nikola OR edison OR coil OR coils)

现在,我们的规则具有非常高的针对性,并且将仅提供包含我们所需文本短语类型的推文。总的来说,下面通过普通语言陈述了将提供的推文具有以下特征:

  1. 文本中包括“tesla”。
  2. 文本中还包括“model 3”、“model-3”或“model three”中的任一一项。
  3. 文本中还包括“angry”、“happy”或“love”。
  4. 文本中不包括“nikola”、“edison”、“coil”和“coils”。

现在,我们来看一个例子,该示例除了纯文本匹配之外,还包含对社交数据的一些独特方面的筛选。

示例 2

“Our company is interested in some references about the TV show “Cutthroat Kitchen” on the Food Network, as well as references to the host (Alton Brown) that relate to the show.”(我们公司对食品网络上关于电视节目“Cutthroat Kitchen”的一些提及以及与该节目有关的主持人 (Alton Brown) 的提及很感兴趣。)

使用我们在第一个示例中学到的知识,我们可以创建一个规则来捕获此类提及。

"cutthroat kitchen" OR cutthroatkitchen OR (("alton brown" OR altonbrown) host OR show)

此规则将捕获:

  • 文本中包含短语“cutthroat kitchen”的推文。
  • 文本中包含“cutthroatkitchen”的推文(同上,但没有空格)。
  • 提及 alton brown(或“altonbrown”)并提及“host”或“show”的推文。

现在,我们假设该公司采用此规则收集了一周的推文,但他们的客户却对结果的质量不满意,希望找到的内容更具有针对性。这一次,他们不仅希望缩小结果的范围,而且还希望捕获一些之前错过的特定提及。

“我们只想获取使用我们的推广话题标签 (#cutthroatkitchen) 的推文、通过节目主持人的 Twitter 用户名 (@altonbrown) 提及该主持人及其相关节目的推文,或链接到食品网络关于 Alton Brown 的在线页面的推文。此外,我们只想获取来自自称位于美国的用户的推文。”

让我们从第一个要求开始。

我们之前的规则通过“cutthroatkitchen”一词,将捕获使用推广话题标签的推文。这可能会匹配“#cutthroatkitchen”、“@cutthroatkitchen”之类的提及或仅仅是对“cutthroatkitchen”的直接引用。出现这些匹配结果的原因是,使用了使用标点符号进行标记化的标记化匹配。但是,我们的客户希望将此限制为仅匹配使用“#cutthroatkitchen”的内容。为此,我们将使用 # 运算符,如下所示:

#cutthroatkitchen

虽然最初的“cutthroatkitchen”一词在推文的常规文本中查找匹配项,但此规则实际上却更改了策略,在 Twitter 从推文本身获取的话题标签列表中查找匹配项(使用原生丰富格式,这将匹配 twitter_entities.hashtags 字段)。因此,它为客户提供了一种更具针对性的方式,以确保他们仅获得该短语的话题标签提及。

类似的概念也适用于将 Alton Brown 提及限制为使用他的 Twitter 用户名的提及。使用前一个词语(“altonbrown”),便会获得文本中对该特定字符串的所有提及。但是,我们可以使用 @ 运算符将其限制为仅对他的 Twitter 用户名的明确提及。

@altonbrown

这意味着该规则将应用于 Twitter 的已获取用户提及(使用原生丰富格式,这将匹配 twitter_entities.mentions 字段)以获取匹配项,而不是应用于推文中使用的常规文本。由于我们现在明确提及了节目主持人的 Twitter 账号,即经认证的 @altonbrown 账号,因此不再需要使用“host”和“show”关键词。

客户之前只是通过在文本中查找对 Alton Brown 姓名的提及,包括推文文本中包含的任何 URL,便获得了一些链接到关于 Alton Brown 的网页的推文。但是,他们遗漏了一些提及,其中,Twitter 用户在发布推文之前使用类似于 bit.ly 的服务缩短了其 URL。为了满足此需求,我们需要将 url_contains: 运算符与客户想要跟踪的特定 URL 配合使用。

url_contains:"foodnetwork.com/chefs/alton-brown"

url_contains: 运算符在完全展开的 URL(由 Twitter 在推文中作为增强功能提供)中查找匹配项。换句话说,即使 URL 被包装在 bit.ly 或其他缩短的链接中,Twitter 也会将其展开为最终 URL,并允许在其中查找匹配项。

最后,客户希望将结果限制为美国用户的推文。为此,我们将使用 Twitter 的个人资料地理增强功能和相应的高级运算符将限制应用于所有先前定义的词语。

请注意,地理运算符目前在 Twitter 开发者实验室中不可用。 

profile_country:us

结合上述更改,我们可以提出一个令客户满意的规则:

profile_country:us (#cutthroatkitchen OR @altonbrown OR url_contains:"foodnetwork.com/chefs/alton-brown")

该规则将匹配以下内容:

  • 使用公司推广话题标签的推文,但并非那些使用不含话题标签的关键词的推文。
  • 对 @altonbrown 的提及,但排除不使用 @ 提及语法的纯文本提及。
  • 包含指向关于 Alton Brown 的食品网络页面的链接的推文,即使这些链接使用 bit.ly 或者其他服务进行了缩短。
  • 此外,根据 Twitter 的个人资料地理增强功能,提供的推文不仅要满足上述要求,还需要具有美国的个人资料国家代码。

使用的语法至关重要 - 在适当的时候使用括号可以创建我们所需的布尔逻辑,并确保全面应用 profile_country:us 运算符。存在疑问时,使用括号可确保不会因规则的运算符顺序而导致意外结果。

除了上述示例之外,还可以通过数百种方法组合运算符和关键词来返回对分析至关重要的数据。扩展这些概念,以根据个人资料信息、关注者数量、推文位置、文本中使用的语言等缩小搜索范围。除了本文讨论的话题之外,你还应熟悉有关运算符和规则的完整文档,包括有关受限字符和规则大小的限制。在以下资源中可以找到这些详细信息:

准备好构建你的解决方案了吗?

阅读文件,然后开始吧。