CN106202556B - 一种基于Spark的海量文本关键词快速提取方法 - Google Patents
一种基于Spark的海量文本关键词快速提取方法 Download PDFInfo
- Publication number
- CN106202556B CN106202556B CN201610609580.3A CN201610609580A CN106202556B CN 106202556 B CN106202556 B CN 106202556B CN 201610609580 A CN201610609580 A CN 201610609580A CN 106202556 B CN106202556 B CN 106202556B
- Authority
- CN
- China
- Prior art keywords
- file
- text
- sequencefile
- word
- spark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Spark的海量文本关键词快速提取方法,读取指定文件夹下所有的文本文件,创建SequenceFile作为原始文本文件;将所述SequenceFile上传到Hadoop平台并加载到内存中;对每个文本文件分词,统计并计算每个单词的词频‑逆文档频率值;把每个单词的词频‑逆文档频率值从大到小排列,提取排名靠前的结果;将所述提取结果保存为Hadoop平台上的SequenceFile,以供查询。本发明通过将文本文件打包成SequenceFile后整体处理,提高了程序对海量文本文件的处理效率;利用Spark将待处理文本数据加载到内存中再利用TFIDF算法处理,实现了对文本关键词的快速准确提取;将提取结果存储到Hadoop平台上,实现了对提取结果的实时快速查询。
Description
技术领域
本发明属于大数据存储与分析领域,尤其涉及一种基于Spark的海量文本关键词快速提取方法。
背景技术
提取文本的关键词是计算机分析自然语言的基本步骤。典型的文本关键词提取算法有TFIDF、TextRank等。TFIDF即词频-逆文档频率算法,该算法综合考虑一个单词的两种属性:词频,即单词在所属文档中出现的频率;逆文档频率,即整个文本库中包含该单词的文档数的倒数。词频越大则单词在所在文档中出现越频繁,逆文档频率越大则该单词在其它文档中出现的概率越小,越能体现该文档的特点。二者相乘即为一个单词的TFIDF值,该值越高则相应单词的重要性越高。TextRank是从搜索引擎计算页面排名的PageRank算法变化而来,利用句子中单词的互相关系计算每个单词的重要性,并由此提取关键词。相比TFIDF算法而言,TextRank算法较为复杂,且效果并不优于TFIDF。
目前,互联网上有海量的文本信息,且数量还在不断迅速增长。在大数据技术面世之前,缺乏对这些文本进行处理的手段。以Hadoop平台为代表的大数据技术解决了这一困境。Hadoop平台包含一系列适用于大数据处理的工具,如存放海量文件的分布式文件***HDFS,存放海量数据的分布式数据库HBase,分布式计算框架MapReduce等。
MapReduce框架以磁盘作为中间结果的缓存,算法执行效率大大受限于磁盘的读写速度,当数据量较大及算法比较复杂时尤为明显。与之相比,内存计算框架Spark将数据加载到内存中进行处理,把对磁盘的读写转化为对内存的读写,大大提高了算法的执行速度。随着市场内存价格的降低,从经济性角度考虑,内存计算也逐渐赶上甚至超过MapReduce框架。但内存数据有易失性,存储需要长期保存的数据时仍然需要使用HDFS这样的磁盘文件***。
发明内容
发明目的:为解决上述问题,对海量文本进行关键词快速提取,本发明提供一种基于Spark的海量文本关键词快速提取方法。
技术方案:一种基于Spark的海量文本关键词快速提取方法,包括以下步骤:
(1)指定本地文件夹,并读取所述文件夹下所有文本文件列表;
(2)根据所有的文本文件在本地创建SequenceFile,作为原始文本文件;
(3)将所述SequenceFile上传到Hadoop平台,等待关键词提取算法处理;
(4)使用Spark将存储在Hadoop平台的SequenceFile加载到内存中;
(5)使用Spark对SequenceFile中每个文本文件分词,并统计整个SequenceFile中每个文本文件的每个单词在其所在的文本文件中出现的次数,记为x;统计整个SequenceFile中每个文件的总单词数,记为y,设每个文本文件的每个单词在其所在的文本文件中出现的频率为TF,计算公式为TF=x/y;使用Spark统计每个单词出现的文本文件数,记为m,统计总的文本文件数,记为n;设该单词的逆文档频率为IDF,计算公式为对于每个文件的每个单词,计算TF*IDF,作为词频-逆文档频率值;
(6)对每个文件,把每个单词的词频-逆文档频率值从大到小排列,设定一个阈值p,保留所述排名前p位的值作为提取结果,去除其余的值;
(7)将所述提取结果保存为Hadoop平台上的SequenceFile,根据所述提取结果生成结果文件。
有益效果:本发明提供的一种基于Spark的海量文本关键词快速提取方法,将海量文本打包进行存储、处理,把对海量小文件的读写转化为对少数大文件的读写,提高读写的效率;利用Spark内存计算框架把待处理数据一次性加载到内存中再用算法处理,把对磁盘的读写转化为对内存的读写,提高了数据处理的速度;最后,通过对算法步骤的合理安排,本方法一次性提取整个海量文本库中所有文件的关键词并把结果存储在Hadoop平台上,需要使用结果时只需直接读取即可,从而实现了对海量文本库中文件关键词的秒级查询。在处理总大小达到10GB、文件数达到100万以上的海量文本时,对小文本打包处理比不打包的原始方法可快15倍以上,使用Spark处理比使用MapReduce又可快5倍以上。随着数据量的增加,两种方法的速度差距还会进一步扩大。对相应的提取结果进行查询,可在0.1秒内获得所需文档的关键词列表。利用Spark将待处理文本数据加载到内存中再利用TFIDF算法处理,实现了对文本关键词的快速准确提取;将提取结果存储到Hadoop平台上,实现了对提取结果的实时快速查询。
附图说明
图1是文本关键词提取流程图;
图2是关键词提取结果图。
具体实施方式
下面结合附图与具体实施方式,对本发明做进一步说明。
基于Spark的海量文本关键词快速提取方法,包括以下步骤:
(1)指定本地文件夹,并读取所述文件夹下所有文本文件列表;
(2)根据所有的文本文件在本地创建SequenceFile,作为原始文本文件。把文本库中的海量小文件在本地打包为SequenceFile,并作为一个整体上传到HDFS。HDFS设计为存储比较大的数据文件,其默认的单个文件块大小达到128MB,海量的小文本文件会大大降低HDFS的读写效率,而SequenceFile则是在HDFS上存储这类文件的有效手段。一个SequenceFile实际上是一个键/值的映射,在本实施例中,文件路径+文件名作为键,而文本文件的内容则作为对应的值。
(3)将所述SequenceFile上传到Hadoop平台,等待关键词提取算法处理。搭建Hadoop集群整合多台计算机的存储能力,利用HDFS来存储海量的文本数据。
(4)搭建Spark集群,利用Spark计算框架整合多台计算机的计算能力和内存,提供算法实现的基本环境。使用Spark将存储在Hadoop平台的SequenceFile加载到内存中;
(5)利用Spark内存计算框架实现TFIDF算法。Spark的优势在于使用读写速度大大高于磁盘的内存作为数据缓存。首先将SequenceFile加载到内存中,使用Spark对SequenceFile中每个文本文件分词,并统计整个SequenceFile中每个文本文件的每个单词在其所在的文本文件中出现的次数,记为x;统计整个SequenceFile中每个文件的总单词数,记为y,设每个文本文件的每个单词在其所在的文本文件中出现的频率为TF,计算公式为TF=x/y;使用Spark统计每个单词出现的文本文件数,记为m,统计总的文本文件数,记为n;设该单词的逆文档频率为IDF,计算公式为对于每个文件的每个单词,计算TF*IDF,作为词频-逆文档频率值;
(6)对每个文件,把每个单词的词频-逆文档频率值从大到小排列,设定一个阈值p,保留所述排名前p位的值作为提取结果,去除其余的值;
(7)将所述提取结果保存为Hadoop平台上的SequenceFile,根据所述提取结果生成结果文件,以原始文本文件名作为键,该文件的关键词提取结果文件作为值,每个结果文件每行包括两列,一列是单词,另一列是该单词在原始文本文件中的词频-逆文档频率值,所述单词按照词频-逆文档频率值从大到小排列。将结果文件以SequenceFile的形式存储到HDFS,以供查询。
在查询文本关键词提取结果时,以目标文本的文件名+路径作为键,到存放结果的SequenceFile中提取该键对应的值,即为相应文本文件的关键词列表。本方法从海量文本库提取关键词的具体操作流程如图1所示。
整个***的硬件资源包含内存、CPU及磁盘存储三部分,其中内存和CPU由Spark计算框架管理,用于加载文本数据、进行算法处理;磁盘存储由Hadoop平台组件HDFS整合,用于存储打包的文本库及关键词提取结果。
图2展示的是算法对示例文本库(英文名著)的处理结果。图2展示了其中一个文本文件(列夫·托尔斯泰的《战争与和平》)提取关键词的结果,两列数据分别为单词的词频-逆文档频率值及单词本身,可见词频-逆文档频率值最高的单词是这部小说中主要人物的姓名。
Claims (1)
1.一种基于Spark的海量文本关键词快速提取方法,其特征在于,包括以下步骤:
(1)指定本地文件夹,并读取所述文件夹下所有文本文件列表;
(2)根据所有的文本文件在本地创建SequenceFile,作为原始文本文件;
(3)将所述SequenceFile上传到Hadoop平台,等待关键词提取算法处理;所述Hadoop平台对原始文本文件的存储采用SequenceFile形式,以原始文件的文件路径+文件名作为SequenceFile的键,文本文件内容作为SequenceFile的值;
(4)使用Spark将存储在Hadoop平台的SequenceFile加载到内存中;
(5)使用Spark对SequenceFile中每个文本文件分词,并统计整个SequenceFile中每个文本文件的每个单词在其所在的文本文件中出现的次数,记为x;统计整个SequenceFile中每个文件的总单词数,记为y,设每个文本文件的每个单词在其所在的文本文件中出现的频率为TF,计算公式为;使用Spark统计每个单词出现的文本文件数,记为m,统计总的文本文件数,记为n;设该单词的逆文档频率为IDF,计算公式为;对于每个文件的每个单词,计算TF*IDF,作为词频-逆文档频率值;
(6)对每个文件,把每个单词的词频-逆文档频率值从大到小排列,设定一个阈值p,保留排名前p位的值作为提取结果,去除其余的值;
(7)将所述提取结果保存为Hadoop平台上的SequenceFile,根据所述提取结果生成结果文件,以供查询,对结果文件的存储采用SequenceFile形式,以原始文本的文件路径+文件名作为SequenceFile的键,该文件的关键词提取结果文件作为值,每个结果文件每行包括两列,一列是单词,另一列是该单词在原始文本文件中的词频-逆文档频率值;在查询文本关键词提取结果时执行如下步骤:以目标文本的文件路径+文件名作为键,到存放结果的SequenceFile中提取该键对应的值,即为相应文本文件的关键词列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610609580.3A CN106202556B (zh) | 2016-07-28 | 2016-07-28 | 一种基于Spark的海量文本关键词快速提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610609580.3A CN106202556B (zh) | 2016-07-28 | 2016-07-28 | 一种基于Spark的海量文本关键词快速提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106202556A CN106202556A (zh) | 2016-12-07 |
CN106202556B true CN106202556B (zh) | 2019-08-30 |
Family
ID=57496820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610609580.3A Active CN106202556B (zh) | 2016-07-28 | 2016-07-28 | 一种基于Spark的海量文本关键词快速提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106202556B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109508557A (zh) * | 2018-10-22 | 2019-03-22 | 中国科学院信息工程研究所 | 一种关联用户隐私的文件路径关键词识别方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810293A (zh) * | 2014-02-28 | 2014-05-21 | 广州云宏信息科技有限公司 | 基于Hadoop的文本分类方法及装置 |
CN105468445A (zh) * | 2015-11-20 | 2016-04-06 | Tcl集团股份有限公司 | 一种基于WEB的Spark应用程序调度方法及*** |
CN105740424A (zh) * | 2016-01-29 | 2016-07-06 | 湖南大学 | 一种基于 Spark 平台的高效率文本分类方法 |
-
2016
- 2016-07-28 CN CN201610609580.3A patent/CN106202556B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810293A (zh) * | 2014-02-28 | 2014-05-21 | 广州云宏信息科技有限公司 | 基于Hadoop的文本分类方法及装置 |
CN105468445A (zh) * | 2015-11-20 | 2016-04-06 | Tcl集团股份有限公司 | 一种基于WEB的Spark应用程序调度方法及*** |
CN105740424A (zh) * | 2016-01-29 | 2016-07-06 | 湖南大学 | 一种基于 Spark 平台的高效率文本分类方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106202556A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10452691B2 (en) | Method and apparatus for generating search results using inverted index | |
Zoumpatianos et al. | Indexing for interactive exploration of big data series | |
CN103593418B (zh) | 一种面向大数据的分布式主题发现方法及*** | |
JP2017518584A (ja) | フラッシュ最適化データ・レイアウトのための方法、フラッシュ最適化記憶のための装置、およびコンピュータ・プログラム | |
CN102915365A (zh) | 基于Hadoop的分布式搜索引擎构建方法 | |
CN105843841A (zh) | 一种小文件存储方法和*** | |
JP5079471B2 (ja) | 同義語抽出装置 | |
CN103617174A (zh) | 一种基于云计算的分布式搜索方法 | |
CN105512143A (zh) | 一种网页分类方法及装置 | |
CN106778079A (zh) | 一种基于MapReduce的DNA序列k‑mer频次统计方法 | |
CN107357895B (zh) | 一种基于词袋模型的文本表示的处理方法 | |
CN103559258A (zh) | 基于云计算的网页排序方法 | |
Das et al. | Indexing the world wide web: The journey so far | |
Sayar | Hadoop optimization for massive image processing: case study face detection | |
Khodaei et al. | Temporal-textual retrieval: Time and keyword search in web documents | |
Iacob et al. | Gpu accelerated information retrieval using bloom filters | |
CN106202556B (zh) | 一种基于Spark的海量文本关键词快速提取方法 | |
Aliakbary et al. | Web page classification using social tags | |
Sailaja et al. | An overview of pre-processing text clustering methods | |
Abdelouarit et al. | Towards an approach based on hadoop to improve and organize online search results in big data environment | |
CN105426490A (zh) | 一种基于树形结构的索引方法 | |
KR102324571B1 (ko) | 패시지단위 검색에서 향상된 검색결과를 제공하는 방법 | |
Ragavan et al. | A Novel Big Data Storage Reduction Model for Drill Down Search. | |
JP2009187211A (ja) | 情報検索システム、情報検索方法およびプログラム | |
CN104346339B (zh) | 语义分析方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |