【问题标题】:How do I filter english tweets only in snscrape?如何仅在 snscrape 中过滤英文推文?
【发布时间】:2023-02-19 02:15:00
【问题描述】:

这是我正在使用的代码,它工作正常并在 csv 文件中显示我需要的所有 400 条推文,但我的问题是它在数据中添加了其他语言,因此在报告中更难使用。有什么办法可以只用英语过滤吗?

import snscrape.modules.twitter as sntwitter
import pandas as pd


query = "Cyberpunk"
tweets = []
limit = 400


for tweet in sntwitter.TwitterSearchScraper(query).get_items():

    if len(tweets) == limit:
        break
    else:
        tweets.append([tweet.date, tweet.user.username, tweet.content])

df = pd.DataFrame(tweets, columns=['Date', 'User', 'Tweet'])

df.to_csv('test.csv', index=False)

【问题讨论】:

    标签: python


    【解决方案1】:

    fasttext 相当快:

    #install fasttext and download the model
    !pip install fasttext
    !wget https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.ftz
    

    带有虚拟数据的示例代码:

    import pandas as pd
    import fasttext
    
    fmodel = fasttext.load_model('lid.176.ftz')
    
    df = pd.DataFrame(['hello this is a great tweet', 'bonjour c'est un super tweet', 'hallo, dit is een geweldige tweet'], columns=['tweet'])
    df['language'] = df['tweet'].apply(lambda x: fmodel.predict([x])[0][0][0].split('__label__')[1]) # detect tweet language
    df = df[df['language'] == 'en'] # filter by language
    

    输出:

    tweet language
    0 hello this is a great tweet en

    【讨论】:

      【解决方案2】:
      import snscrape.modules.twitter as sntwitter
      import pandas as pd
      
      
      query = "Cyberpunk"
      tweets = []
      limit = 400
      
      
      for tweet in sntwitter.TwitterSearchScraper(query).get_items():
      
          if len(tweets) == limit:
              break
          else:
              if tweet.lang=='en':
                  tweets.append([tweet.date, tweet.user.username, tweet.content])
      
      df = pd.DataFrame(tweets, columns=['Date', 'User', 'Tweet'])
      
      df.to_csv('test.csv', index=False)
      

      【讨论】:

      • 这对我有用
      猜你喜欢
      • 2015-03-06
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2022-09-27
      • 2021-07-23
      • 2022-12-11
      • 2022-01-09
      • 2018-01-31
      相关资源
      最近更新 更多