数据抓取和自然语言处理?

数据挖掘 Python nlp CSV
2022-02-26 13:57:43

我正在使用 BeautifulSoup 在 Python 上从 Bing 搜索结果中抓取数据(当然是非商业目的)。我输入了一个印度甜点名称,称为“rasmalai”作为我关注的词。我使用的代码返回网页的标题和描述。我还提取了结果的链接。这是我使用的代码:

from bs4 import BeautifulSoup
import urllib, urllib2

def bing_search(query):
    address = "http://www.bing.com/search?q=%s" % (urllib.quote_plus(query))

    getRequest = urllib2.Request(address, None, {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 Chrome/65.0.3325.162 Safari/537.36'})

    urlfile = urllib2.urlopen(getRequest)
    htmlResult = urlfile.read(200000)
    urlfile.close()

    soup = BeautifulSoup(htmlResult)

    [s.extract() for s in soup('span')]
    #unwantedTags = ['a', 'strong', 'cite']
    #for tag in unwatedTags:
        #for match in soup.findAll(tag):
           # match.replaceWithChildren()

    results = soup.findAll('li', {"class" : "b_algo" })
    for result in results: 
        print "# TITLE: " + str(result.find('h2')).replace(" ", " ") + "\n#"
        print "# DESCRIPTION: " + str(result.find('p')).replace(" ", " ")
        print "# ___________________________________________________________\n#"

    return results

if __name__ == '__main__':
    links = bing_search('rasmalai')

现在我有了链接、网页标题和简短描述,我想使用 NLP 提取关键字。最后,我想生成一个带有菜名和相关关键字的 CSV 文件。有人可以指导我获取有关如何执行此部分的一些资源吗?

非常感谢你。

1个回答

NLTK

关键字提取的一个很好的起点是 NLTK(自然语言工具包)库。要提取关键字,您可能需要对数据进行标记,将每个单词分解为一个标记,并忽略最常见或不重要的单词,即“停用词”。假设您要在大量查询结果中搜索关键字,请使用 TF-IDF(词频-逆文档频率)识别每个文档中最重要的词。NLTK 文档中有这方面的工具和教程对生成的标记分数进行排序,选择得分最高的标记,这些是您关键字的良好开端。