首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于社交网络挖掘公司潜在用户(2)

基于社交网络挖掘公司潜在用户(2)

2 从 LinkedIn 提取公司信息至此关于公司已有的成功案例信息提取完毕,但是 Twitter                中包含的公司信息有限,所以需要从其他的数据源中提取更多的关于各个公司的信息来完成进一步的数据挖掘,推荐工作。社交媒体 LinkedIn                中包含了更多的关于公司的信息,本文接下来介绍如何提取 LinkedIn 中的相关信息。
2.1 获取授权我们使用 LinkedIn 支持的 OAuth 2.0 协议来进行授权。授权成功后,就可以通过调用 REST API 来与服务器进行交互。
  • 首先在                     创建一个应用。                创建一个应用后,会获得一组验证秘钥,包括客户端编号(Client ID),以及客户端密码(Client                Secret)。然后需要在创建的应用中添加授权重定向网址 Authorized Redirect URLs。
  • 加载 WebView 获得授权码。打开 WebViewController.swift 文件,添加必要的参数。当这些必要的参数都添加成功后,我们就在 WebView 中登录了                LinkedIn 账号,请求加载成功后,LinkedIn 服务器就会返回一个授权码。
  • 交换授权码,获取 Access Token。 通过 Access Token,我们可以向 LinkedIn 服务器发起授权请求,并通过 GET 或 POST 请求获取信息。下图展示了如何通过提供                Access Token 发起授权请求,并调用 API。
清单 2. 通过 Access Token                    发起授权请求
application = LinkedInApplication(token = 'Your AccessToken')




2.2 调用 API 获取公司信息我们使用 LinkedIn 提供的 API LinkedInApplication 来进行关键字搜索。以从 Twitter                推文中获取的公司名称为关键字,搜索所有相关的公司的信息。
该 API 所能返回与关键字相关的公司的多维度信息,包括 ID,公司名称,公司网页                URL,公司所处行业,公司介绍,公司领域,公司类型和规模等。
我们会从 API 返回的公司集合中,选择返回结果中的第 1 个公司,即相似度最高的一个公司,与 Twitter                推文中获取的公司名称再进行下一步的匹配。
清单 3. 调用 API                获取公司信息
def link_search_comp(keyword):
result_from_linkedin = application.search_company(selectors=[{'companies':['id',
'name', 'websiteurl','industries','description','specialties',
'twitter-id','company-type','employee-count-range']}], params={'keywords':keyword})
     if (result_from_linkedin['companies']['_total']>0):
          if(result_from_linkedin['companies']['values'][0].has_key('websiteUrl')==False):
                  result_from_linkedin['companies']['values'][0]['websiteUrl']=''
         return result_from_linkedin['companies']['values'][0]
     return ''




2.3 匹配公司为了绝对匹配 Twitter 推文中所提到的公司与 LinkedIn 中的公司,我们采用匹配公司名称和 URL 域名相结合的方式。首先,以                Twitter 推文中涉及到的公司 name 域为关键字,通过该名称在 Linkedin                中搜索,若搜索结果中的公司名称和输入的关键字完全匹配,则为公司匹配成功;若不完全匹配,则进一步判断 Twitter 和 Linkedin 公司的                URL 域名是否相同,同时,为了避免因为 Twitter 中个人使用公司 URL                这种情况的存在而造成最终公司匹配错误,还需要判断输入关键字和搜索结果中公司名称的字符串相似度是否达到给定阈值,以上两个条件同时满足时,公司匹配成功,否则,匹配失败。若通过公司名称方式匹配失败,则继续通过                URL 域名方式进行搜索,该方式将 Twitter 中公司 URL domain 中的域作为关键字在 Linkedin                中进行搜索,若搜索结果中公司的 URL 域名和 Twitter 中公司的 URL 域名相同,则匹配成功,否则失败。利用上述匹配方法,通过统计可得                Twitter 推文中所提到的公司,约 60%可在 LinkedIn 中一一匹配并能够提取到其进一步的具体信息。
清单 4.                匹配公司
def link_compare_match(linkedin_result,twitter_result,method):
     linkedin_domain = get_format_domain(linkedin_result['websiteUrl'])
     twitter_domain = twitter_result.urls
     if (method == 'name'):
           if (twitter_domain==linkedin_domain):
                 return YES
     elif(method=='domain'):
            if(linkedin_result['name'] == twitter_result.name):
                   return YES
elif (twitter_domain==linkedin_domain and name_match(linkedin_result['name'],
twitter_result.name)==True):
                   return YES
     return NO




对于这些匹配成功的公司,我们有了更详尽的数据,包括公司所属行业,专注的领域,公司规模,公司描述等等。通过这些丰富的信息,我们可计算得出不同公司之间的相似度,通过相似度来挖掘潜在客户。
返回列表