news 2026/2/10 3:01:26

NLP:房地产出租房源的文本摘要与关键词提取——第一部分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NLP:房地产出租房源的文本摘要与关键词提取——第一部分

原文:towardsdatascience.com/nlp-text-summarization-and-keyword-extraction-on-property-rental-listings-part-1-f1b760cc7bbb?source=collection_archive---------1-----------------------#2024-07-08

在出租房源数据上实施 NLP 技术的实际应用,例如文本摘要、NER、主题建模和文本分类

https://medium.com/@kristiyanto_?source=post_page---byline--f1b760cc7bbb--------------------------------https://towardsdatascience.com/?source=post_page---byline--f1b760cc7bbb-------------------------------- Daniel Kristiyanto

·发表于Towards Data Science ·阅读时间 10 分钟·2024 年 7 月 8 日

介绍

自然语言处理(NLP)可以显著提升出租房源描述的分析和可用性。在本次实践中,我们将探索 NLP 技术的实际应用,例如文本摘要、命名实体识别(NER)和主题建模,以提取洞察并丰富东京 Airbnb 房源数据的描述。使用公开的可用数据和像 spaCy 与 SciKit-Learn 这样的工具,您可以跟随教程,复制结果,或将这些技术应用于自己的文本数据,只需进行最小的调整。代码库可在GitHub上获取,您可以进行分叉并进行实验。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/264198623a04de117747b2f69f02975b.png

本文展示了使用多种 NLP 技术,从房产出租描述数据(左)中提取信息,并将其转化为更具信息量的描述(右)。文中的所有图片均由作者制作。代码和 Jupyter 笔记本可在GitHub上找到,数据可以在insideairbnb.com上获取,并遵循创意共享署名协议。

第一部分(本文)涵盖基础内容:目标、数据及其准备工作,以及用于提取关键词和文本摘要的各种技术,如命名实体识别(NER)、TF-IDF / 句子评分、以及谷歌的 T5(文本到文本的转换器)。我们还将涉及如何利用这些见解来提升用户体验 — 包括服务建议。

第二部分(即将发布)涵盖主题建模和文本预测:第二部分将展示如何在无标签数据上执行主题建模。即将发布的文章将讨论诸如聚类等技术,帮助揭示隐藏的主题,并构建一个预测模型,以根据房源类别和主题对租赁房源进行分类。

目标

任务很简单:

给定的示例输入:租赁描述

生成输出:

章节:

  1. 数据与准备

    获取数据、清理数据、定制词形还原

  2. 文本摘要

    TFIDF/句子评分、深度学习、LLM(T5)、评估

  3. 使用 NER 提取关键词

    正则表达式、匹配器、深度学习

  4. 服务建议

1. 数据与准备

我们的数据集由来自insideairbnb.com的租赁房源描述组成,遵循创意共享署名 4.0 国际许可证。我们专注于物业所有者撰写的文本。数据包含近 15,000 个租赁描述,主要为英文。用日文书写的记录(令人惊讶的是,只有少数几条!)在数据清理过程中已被移除,数据清理还包括去除重复记录和刮取器留下的 HTML 残余。由于大量数据去重,可能是由于网络抓取工具的副产品,或者可能是更复杂的问题(例如,房东发布了多个相同的房源),数据清理使得原始数据量减少了约一半。

1a. spaCy 流水线

一旦数据清洗完成,我们就可以开始构建 spaCy 管道。我们可以从一个空白模板开始,或者使用像 en_core_web_sm 这样的预训练模型来处理英文文档。这个模型包含一个强大的管道,包含:

1b. 自定义词形还原

即使是像 en_core_web_sm 这样的经过严格测试的管道,通常也需要进行调整以涵盖特定的用例。例如,租赁行业中常用的缩写(例如,br 代表卧室,apt 代表公寓,st 代表街道)可以通过自定义词形还原引入到管道中。为了评估这一点,我们可以比较在有和没有自定义词形还原的管道中,token.lemma_的数量。如果需要,还可以使用其他更强大的预制管道,如 en_core_web_md(中型)或 en_core_web_lg(大型)。

在生产级项目中,需要更全面的列表,可能还需要更严格的数据清洗。例如,表情符号和类似表情符号的符号经常出现在受文化影响的写作中,如日本用户的写作中。这些符号可能会引入噪音,需要特定的处理,如删除或转换。其他数据预处理,如更强大的句子边界检测器,也可能是必要的,以处理缺少空格的句子,例如*“这是一个句子。这也是。还有这个。还有这个。但是,不,这个 Next.js 是一个有效的术语,而不是两个句子!”*

2. 文本摘要

在东京选择租赁选项可能让人不知所措。每个房源都声称是理想的家。然而,数据显示,房产描述常常不尽如人意——它们可能过于冗长,令人沮丧地简短,或者被不相关的细节弄得杂乱无章;这就是为什么文本摘要技术非常有用的原因。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a24a755fb9b1d8b693867f92b9a33236.png

句子评分,以选择最具信息量的句子作为摘要(右图),来自描述(左图)。

2a. 难度级别:简单 — TF-IDF

一种典型的文本摘要方法是使用 TF-IDF(词频-逆文档频率)技术。TF-IDF 同时考虑一个单词在特定文档(例如租赁列表)中的出现频率以及它在整个数据集或语料库中出现的稀有程度。这项技术对于各种文本分析任务也非常有用,如索引、相似度检测和聚类(我们将在第二部分中探讨)。

根据检测到的关键词的相关性计算句子的排名。

该技术的另一种变体是基于词共现的句子评分。与 TF-IDF 类似,这种方法通过比较文档中的单词出现情况来计算得分。该方法快速且简单,不需要额外的工具或其他文档的意识。即使在前端使用 TypeScript,你也可以随时执行此操作,尽管不推荐这样做。

然而,像这样的抽取式摘要技术有一个缺陷:它们只找到文档中的最佳句子,这意味着所选句子中的拼写错误或其他问题会出现在摘要中。这些拼写错误还会影响评分,使得该模型对错误不够宽容,而没有包括在所选句子(或句子)中的重要信息可能会被遗漏。

2b. 级别:中级 — 深度学习

除了基于频率的方法,我们还可以利用深度学习的力量进行文本摘要。序列到序列(Seq2Seq)模型是一种神经网络架构,旨在将序列从一种形式转换为另一种形式。在文本摘要任务中,这些模型充当复杂的翻译器。

一个 Seq2Seq 模型通常由两部分组成:编码器和解码器。编码器处理整个输入文本,捕捉其含义和结构。然后,这些信息被压缩成一个隐藏的表示。接下来,解码器使用来自编码器的隐藏表示生成新的序列——文本摘要。在训练过程中,解码器学习如何将捕捉原始文本关键信息的编码表示进行转换。与抽取式方法不同,这些模型执行抽象式摘要:用自己的话生成摘要,而不是直接从文本中提取句子。

2c. 级别:高级 — 预训练语言模型

对于抽象式摘要,可以考虑使用 T5(Text-To-Text Transfer Transformer)模型。虽然t5-small提供了一个不错的起点,但你可能会通过更大的模型,如t5-baset5-large,获得更好的结果。请注意,较大的模型可能需要更多的计算资源,并且运行时间较长。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5fa0b7994b8c847d53c02bf4cd7aba2e.png

大型语言模型(LLMs)能够以富有创意的方式进行文档总结(不仅仅是复制句子),但要获得最佳效果,可能需要在摘要过程中、摘要前后进行额外的步骤,包括适当的提示工程。

像 T5(Text-To-Text Transfer Transformer)或 BERT(Bidirectional Encoder Representations from Transformers)这样的预训练语言模型,可以显著提升摘要效果,适用于那些拥有资源和设置能力的人。然而,尽管这些模型对于大文本有效,但它们可能对于这个特定的用例来说有些过于复杂。它不仅需要更多的设置来发挥最佳效果,还包括提示工程(预处理)、重新训练或微调,以及后处理(如语法、文本大写,甚至事实检查和合理性检查),以引导模型达到期望的输出。

2.d 评估文本摘要

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/696b776edf6bd88cb54cc7a5d59a6675.png

提取式(左)与抽象式(右)文本摘要。鉴于摘要质量是主观的,哪种摘要更优并不总是明确的。考虑到所需的努力、成本和计算能力,比较变得更加复杂。

从上面的图片可以看到,当比较使用 TFIDF 的“简单”模型与使用 LLM 的复杂模型时,哪种模型更优并不总是显而易见的。评估文本摘要系统的质量是一个复杂的挑战。与有明确单一答案的任务不同,对于给定文本,并没有一个完美的摘要。人类可以优先考虑原始内容的不同方面,这使得设计与人类判断完全一致的自动化评估指标变得更加困难。

像 ROUGE(召回导向总结评估指标)这样的评估指标旨在实现这一点。通过比较生成的摘要与人工编写的摘要之间的 n-gram(词组序列)重叠,ROUGE 系统地评分摘要的质量。该方法依赖于一组人工编写的摘要作为评估的基准,但这些人工摘要通常并不总是可用的。

3. 使用命名实体识别(NER)进行关键词提取

尽管摘要很有帮助,但关键词有不同的用途。关键词捕捉了潜在租客可能关注的最关键方面。为了提取关键词,我们可以使用 NLP 技术,例如命名实体识别(NER)。这个过程不仅仅是识别频繁出现的词汇。通过考虑诸如词语共现和与租赁列表领域相关性等因素,我们可以提取出关键信息。这些信息可以是单个词,例如‘豪华的’(形容词)、‘银座’(地点),或者像‘安静的环境’(名词短语)或‘靠近新宿’(接近性)这样的短语。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e5d3925865319e0c06d69ec78b94d253.png

评估 NER:SpaCy 内置的命名实体识别(NER)表现良好,但某些实体类型可能需要额外的训练数据以达到最佳准确度。(NER 代表命名实体识别,GPE:地理政治实体)

3a. 难度:简单 — 正则表达式

字符串操作中的“find”函数,加上正则表达式,可以完成关键词查找的工作。然而,这种方法需要一个详尽的单词和模式列表,而这在某些情况下并不实际。如果有一个详尽的关键词列表可供查找(例如,金融相关项目中的股票交易所缩写),正则表达式可能是最简单的方式。

3b. 水平:中级 — 匹配器

虽然正则表达式可以用于简单的关键词提取,但由于需要大量的规则列表,覆盖所有情况变得非常困难。幸运的是,大多数自然语言处理(NLP)工具都具备开箱即用的命名实体识别(NER)功能。例如,Natural Language Toolkit(NLTK)有命名实体分块器,而 spaCy 则有匹配器(Matcher)。

匹配器允许你根据语言特征,如词性标签或特定关键词,定义模式。这些模式可以与租赁描述进行匹配,从而识别相关的关键词和短语。这种方法能够捕捉单个词(如东京)和有意义的短语(如美丽的房子),这些更能代表房产的卖点。

noun_phrases_patterns=[[{'POS':'NUM'},{'POS':'NOUN'}],#example: 2 bedrooms[{'POS':'ADJ','OP':'*'},{'POS':'NOUN'}],#example: beautiful house[{'POS':'NOUN','OP':'+'}],#example: house]# Geo-political entitygpe_patterns=[[{'ENT_TYPE':'GPE'}],#example: Tokyo]# Proximityproximity_patterns=[# example: near airport[{'POS':'ADJ'},{'POS':'ADP'},{'POS':'NOUN','ENT_TYPE':'FAC','OP':'?'}],# example: near to Narita[{'POS':'ADJ'},{'POS':'ADP'},{'POS':'PROPN','ENT_TYPE':'FAC','OP':'?'}]]

3c. 水平:高级 — 基于深度学习的匹配器

即使使用匹配器,一些术语也可能由于句子中单词的上下文未被规则匹配捕获。例如,匹配器可能会漏掉像“离上野公园一箭之遥”这样的术语,因为它无法通过任何预定义的模式,或者将“新宿歌舞伎町”误认为是一个人名(它是一个区域,或者是地点(LOC))。

在这种情况下,基于深度学习的方法可能更为有效。通过在包含相关关键词的大量租赁列表上进行训练,这些模型能够学习单词之间的语义关系。这使得这种方法更能适应不断变化的语言使用,并能够揭示潜在的洞察。

使用 spaCy 进行基于深度学习的 NER 非常简便。然而,这种方法的主要构建块通常是标注的训练数据,正如本次练习中的情况一样。标签是目标术语和实体名称的配对(例如:“a stone throw away”是名词短语——或者如图所示:新宿歌舞伎町是一个地点(LOC),而非人名),并以特定的方式格式化。与基于规则的方法不同,基于规则的方法是通过内置功能将术语描述为名词、地点等,而在此方法中,需要数据探索或领域专家来发现我们想要识别的目标术语。

本文的第二部分将讨论使用聚类、引导法和其他方法从数据中发现主题或标签的技术,以进行主题建模。

4. 食用建议

提取的关键词对后台和前端应用都非常有价值。我们可以利用它们进行各种后续分析,如主题和话题探索(将在第二部分讨论)。在前端,这些关键词可以帮助用户找到具有相似特征的列表——可以将它们视为 Instagram 或 Twitter 上的标签(但这是自动的!)。你还可以突出显示这些关键词,或者让它们成为可点击的链接。例如,命名实体识别(NER)可以识别出诸如“Iidabashi”或“Asakusa”这样的地点。当用户将鼠标悬停在这些关键词上时,弹出窗口可以显示有关这些地点的相关信息。

摘要提供了列表的简洁概述,非常适合快速掌握关键信息,或用于移动设备显示。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7edfd94e96e80f98979310e6250eedf4.png

关键词和文本摘要可以丰富用户体验。在这个例子中,我们使用提取的文本摘要来快速概览列表描述。选择的关键词(例如 LOC)也被用来提供更多列表描述的背景。这一过程可以在后台进行(以提高加载速度),也可以在前端进行(以提高便利性)。

向前迈进

在本文中,我们展示了各种自然语言处理(NLP)技术的实际应用,如文本摘要和命名实体识别(NER)在租赁列表数据集上的应用。这些技术通过提供简洁、信息丰富且易于搜索的租赁列表,能够显著改善用户体验。

在接下来的文章(第二部分)中,我们将使用聚类等方法来发现隐藏的主题和标签。这将使我们能够构建一个强大的模型,充当推荐引擎。我们还将进一步探索像主题建模和文本分类等高级 NLP 技术,以增强租赁列表描述的分析和可用性。

以上です★これからもうよろしくおねがいします☆また今度。

**注意:

  1. Github 仓库:https://github.com/kristiyanto/nlp_on_airbnb_dataset2) 数据 (创作共用 4.0 国际许可协议):**https://insideairbnb.com/get-the-data/3) 本文中的所有图片由作者制作。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/8 10:33:44

ccmusic-database镜像免配置优势:内置466MB模型权重,无需额外下载

ccmusic-database镜像免配置优势:内置466MB模型权重,无需额外下载 1. 为什么音乐分类总卡在“下载模型”这一步? 你是不是也遇到过这样的情况:想试试一个音乐流派分类工具,兴致勃勃 clone 代码、装依赖、运行脚本………

作者头像 李华
网站建设 2026/2/8 10:32:55

如何提高用户满意度?Qwen2.5对话连贯性优化技巧

如何提高用户满意度?Qwen2.5对话连贯性优化技巧 1. 为什么对话连贯性直接影响用户满意度 你有没有遇到过这样的情况:和AI聊着聊着,它突然忘了前面说过什么,答非所问,或者话题跳得毫无逻辑?用户在真实使用…

作者头像 李华
网站建设 2026/2/8 10:20:27

计算机小程序毕设实战-基于springboot+小程序的社区资产管理app设计与实现基于springboot+vue实现的数据资产管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/8 10:08:06

模型集成十年演进

模型集成(Model Ensembling) 的十年(2015–2025),是从“投票与堆叠”向“权重融合(Weight Merging)”,再到“大模型协作体系(Multi-Agent Collaboration)”的…

作者头像 李华