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

📅 发布时间:2026/7/5 22:32:19 👁️ 浏览次数:
NLP:房地产出租房源的文本摘要与关键词提取——第一部分
原文towardsdatascience.com/nlp-text-summarization-and-keyword-extraction-on-property-rental-listings-part-1-f1b760cc7bbb?sourcecollection_archive---------1-----------------------#2024-07-08在出租房源数据上实施 NLP 技术的实际应用例如文本摘要、NER、主题建模和文本分类https://medium.com/kristiyanto_?sourcepost_page---byline--f1b760cc7bbb--------------------------------https://towardsdatascience.com/?sourcepost_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文本到文本的转换器。我们还将涉及如何利用这些见解来提升用户体验 — 包括服务建议。第二部分即将发布涵盖主题建模和文本预测第二部分将展示如何在无标签数据上执行主题建模。即将发布的文章将讨论诸如聚类等技术帮助揭示隐藏的主题并构建一个预测模型以根据房源类别和主题对租赁房源进行分类。目标任务很简单给定的示例输入租赁描述生成输出关键词“商业街”、”商店”、或 “靠近车站”关键词有助于可视化数据、揭示主题、识别相似性并改善前端的搜索功能。有关如何使用这些关键词的建议请参见本文底部。摘要一到两句话约 80 个字符。摘要提供简洁的信息通过快速传达列表中的最重要方面提升用户体验。主题/话题“优越的交通连接”、”适合家庭入住”对共享相同主题的房源进行分类可以作为推荐系统帮助用户找到符合他们偏好的房源。与单个关键词不同这些主题可以涵盖多个关键词如厨房、桌子、单人床、长期出租 “数字游牧者友好”。我们将在第二部分即将发布的文章深入讨论这个问题。章节数据与准备获取数据、清理数据、定制词形还原文本摘要TFIDF/句子评分、深度学习、LLMT5、评估使用 NER 提取关键词正则表达式、匹配器、深度学习服务建议1. 数据与准备我们的数据集由来自insideairbnb.com的租赁房源描述组成遵循创意共享署名 4.0 国际许可证。我们专注于物业所有者撰写的文本。数据包含近 15,000 个租赁描述主要为英文。用日文书写的记录令人惊讶的是只有少数几条在数据清理过程中已被移除数据清理还包括去除重复记录和刮取器留下的 HTML 残余。由于大量数据去重可能是由于网络抓取工具的副产品或者可能是更复杂的问题例如房东发布了多个相同的房源数据清理使得原始数据量减少了约一半。1a. spaCy 流水线一旦数据清洗完成我们就可以开始构建 spaCy 管道。我们可以从一个空白模板开始或者使用像 en_core_web_sm 这样的预训练模型来处理英文文档。这个模型包含一个强大的管道包含分词Tokenization将文本拆分为单词、标点符号等。词性标注Part-of-Speech Tagging将单词标记为名词、动词等。依存句法分析Dependency Parsing识别单词之间的关系。句子分割器Sentencizer将文档拆分为句子。词形还原Lemmatization将词汇简化为其基本形式例如seeing、see、saw、seen。属性规则Attribute Ruler添加、删除或更改标记的属性。命名实体识别NER识别命名实体的类别人名、地名等。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. 级别高级 — 预训练语言模型对于抽象式摘要可以考虑使用 T5Text-To-Text Transfer Transformer模型。虽然t5-small提供了一个不错的起点但你可能会通过更大的模型如t5-base或t5-large获得更好的结果。请注意较大的模型可能需要更多的计算资源并且运行时间较长。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5fa0b7994b8c847d53c02bf4cd7aba2e.png大型语言模型LLMs能够以富有创意的方式进行文档总结不仅仅是复制句子但要获得最佳效果可能需要在摘要过程中、摘要前后进行额外的步骤包括适当的提示工程。像 T5Text-To-Text Transfer Transformer或 BERTBidirectional 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评估 NERSpaCy 内置的命名实体识别NER表现良好但某些实体类型可能需要额外的训练数据以达到最佳准确度。NER 代表命名实体识别GPE地理政治实体3a. 难度简单 — 正则表达式字符串操作中的“find”函数加上正则表达式可以完成关键词查找的工作。然而这种方法需要一个详尽的单词和模式列表而这在某些情况下并不实际。如果有一个详尽的关键词列表可供查找例如金融相关项目中的股票交易所缩写正则表达式可能是最简单的方式。3b. 水平中级 — 匹配器虽然正则表达式可以用于简单的关键词提取但由于需要大量的规则列表覆盖所有情况变得非常困难。幸运的是大多数自然语言处理NLP工具都具备开箱即用的命名实体识别NER功能。例如Natural Language ToolkitNLTK有命名实体分块器而 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 技术以增强租赁列表描述的分析和可用性。以上です★これからもうよろしくおねがいします☆また今度**注意Github 仓库https://github.com/kristiyanto/nlp_on_airbnb_dataset2) 数据 (创作共用 4.0 国际许可协议)**https://insideairbnb.com/get-the-data/3) 本文中的所有图片由作者制作。