移动环境下的内容推荐初探课件_第1页
移动环境下的内容推荐初探课件_第2页
移动环境下的内容推荐初探课件_第3页
移动环境下的内容推荐初探课件_第4页
移动环境下的内容推荐初探课件_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

移动环境下的内容推荐初探移动环境下的内容推荐初探1Agenda●

什么是推荐系统●

移动内容推荐的特点●

豌豆荚移动内容推荐关键技术●

总结Agenda●什么是推荐系统●移动内容推荐的特点2什么是推荐系统什么是推荐系统3Recommender

systems

orrecommendation

systems

(sometimesreplacing

"system"

with

a

synonym

suchas

platform

or

engine)

are

a

subclass

ofinformation

filtering

system

that

seek

topredict

the

'rating'

or

'preference'

thatuser

would

give

to

an

item.-

from

wikipediaRecommendersystemsorrecommen4Recommender

systems/engines

are

asubclass

of

information

retrievalsystems/engines

in

passive

mode.Search

systems/engines

are

a

subclassof

information

retrieval

systems/enginesin

active

mode.Recommendersystems/enginesar5常用的推荐功能●

有哪些值得看的电影?●

去哪儿下馆子腐败?●

淘点啥宝贝?●

装什么有意思的应用?●

大家都在讨论什么话题?●

Netflix

Prize

$1

Million

Challenge?常用的推荐功能●有哪些值得看的电影?●装什么有意6应用场景排行榜推荐个性化推荐使用海量数据电影推荐多多是餐馆推荐多少是商品推荐多多是应用推荐多多是话题推荐多少是广告推荐少多是推荐技术应用场景应用场景排行榜推荐个性化推荐使用海量数据电影推荐多多是餐馆推7推荐用户(User)海量数据是推荐之本

推荐位置

推荐位所在页面内容

推荐位在页面中位置

推荐物品(Item)推荐物品

种类、主题、关键词

生命周期、投放规则

大小、颜色、价格

…...推荐用户

人口学属性(性别、年

龄等)

行为属性/兴趣特征(浏

览、搜索、缓存)

Social内容(社交关系

、小组发帖)

上下文(时间、地点等)●…...推荐用户(User)海量数据是推荐之本推荐物品推荐用户●….8

推荐算法

关键规则挖掘协同过滤

CF(User-based

CF,

Item-

based

CF)

矩阵分解

图挖掘

基于热度/知识/规则的推荐

基于内容的推荐

基于预测模型的推荐

混合推荐方法推荐算法

推荐用户

用户行为属性

Social内容

人口学属性

行为属性/兴趣

特征

用户全局画像

推荐场景一个用户在多个物品

有行为

用户-物品行为矩阵

不能过于稀疏用户对物品的兴趣规

律可观察

适用于解决冷启动

(cold

start)问题真实系统大都这么做 推荐算法推荐算法 推荐场景9推荐算法优点缺点示例基于知识的推荐算法(基于人工观察和经验,抽象出规则进行推荐)1.方法简单2.规则易解释、易运营3.所需数据少1.规则来源于人工知识,覆盖率差2.有效周期难以判断好友推荐基于内容的推荐算法1.可以解决冷启动问题2.方便整合各种用户/物品特征3.推荐结果易于理解1.受限于特征提取的准确性2.需要大量的支撑数据3.常局限于特征稀疏的情况GoogleNewsAmazon淘宝豌豆荚协同过滤的推荐算法1.原理简单有效,易于理解2.算法灵活,支持海量用户/物品3.无需考虑复杂特征,支持特征空间极其复杂的用户/物品的高效计算1.很明显的冷启动问题2.常受限于用户/物品行为矩阵稀疏的情况3.受限于用户/物品rating的正确性Netfix淘宝Amazon豆瓣豌豆荚常用推荐算法比较推荐算法优点缺点示例基于知识的推荐算法(1.方法简单1.规则10协同过滤-User-based

CF协同过滤-Item-based

CF协同过滤-User-basedCF协同过滤-Item-ba11移动推荐的特点移动推荐的特点12使用次数多时间碎片化使用次数多时间碎片化13内容消费占大头用户易定位(用户<->设备)内容消费占大头用户易定位(用户<->设备)14特点原因实时推荐非常重要移动设备/应用使用次数多推荐的准确率要求更高移动设备/应用使用时间碎片化内容推荐是关键移动设备/应用消费中内容是大头可利用用户信息更丰富移动设备可以用来准确定位用户移动推荐的新特点特点原因实时推荐非常重要移动设备/应用使用次数多推荐的准确率15豌豆荚移动内容推荐关键技术豌豆荚移动内容推荐关键技术16豌豆荚移动内容推荐框架豌豆荚移动内容推荐框架17关键技术之知识图谱关键技术之知识图谱18知识图谱

-

Knowledge

Graph

Knowledge

Graph

understands

real-world

entities

and

their

relationships

to

one

another:

things,

not

strings,

helps

the

machine

to

understand

the

world

a

bit

more

like

people

do.Knowledge

Graph

consists

of

nodes

with

edgesbetween

them.

Each

node

corresponds

to

an

entity

inreal

work,

each

edge

describe

the

relationship

betweenthe

begin

and

end

nodes.知识图谱-KnowledgeGraphKnowledg19Google

Knowledge

GraphData

Sources●

Public

Sources(Wikipedia,

Freebase,CIA

World

Factbook)●

Knowledge

Mining

from

Webpages(Lists,

Tables,

etc.)●

Knowledge

Mining

from

user

queries(xxattributes

of

yy

entity)GoogleKnowledgeGraphDataSou20Google

Knowledge

Graph

Usages

Find

the

right

thing

Recognize

the

entities

in

queries

and

associates

them

with

the

relevant

information,

and

disambiguate

entities

using

context

information.

Get

the

best

summary

Use

the

users

search

behavior

to

determine

the

most

needed

aspects

for

each

entity.

Go

deeper

and

broader○Help

users

to

get

some

unexpected

discoveries.GoogleKnowledgeGraph○Helpus21移动环境下的内容推荐初探课件22豌豆荚知识图谱数据来源●

公开来源(Wikipedia,

Freebase,

IMDB、豆瓣电影)●

应用内内容/网页信息中解析出来的实体

和实体关系信息(应用,游戏,书,视频

,音乐等)●

豌豆荚用户贡献的User

profile信息和UGC内容●

用户-实体的关系(搜索、浏览、消费、豌豆荚知识图谱数据来源●公开来源(Wikipedia23豌豆荚知识图谱数据来源●

公开来源(Wikipedia,

Freebase,

IMDB、豆瓣电影)●

应用内内容/网页信息中解析出来的实体

和实体关系信息(应用,游戏,书,视频

,音乐等)●

豌豆荚用户贡献的User

profile信息和UGC内容●

用户-实体的关系(搜索、浏览、消费、豌豆荚知识图谱数据来源●公开来源(Wikipedia24豌豆荚知识图谱

用途

信息展示○全面展示内容相关的实体及相互关系●

用户意图理解○○重名区分查询意图识别●

内容推荐○○○○豌豆荚首页内容推荐

-

追新有趣豌豆荚详情页内容推荐

-

相关而非相似豌豆荚各频道列表页内容推荐

-

追热有趣…...豌豆荚知识图谱○全面展示内容相关的实体及相互关系●用25关键技术之Giraph-图挖掘平台关键技术之Giraph-图挖掘平台26Giraph

-

图挖掘平台Giraph

是Google

Pregel的开源实现,它基于Hadoop,通过在Hadoop上运行map-only的job来实现常见的图挖掘算法。Giraph

提供了一个简单的“面向节点”(Think

like

a

vertex)的编程模型。所有的图挖掘算法都可简化为在每一个Vertex上的两类操作:1)

在vertext上进行数值计算(computation);2)

将数值计算的结果通过边传递给相邻的全部/部分节点(communication)。上述编程模型极大简化了图挖掘算法的实现,使得每个算法都可以迭代地实现,这一切是建立在Giraph内嵌的bulksynchronous

parallel编程模型基础上。Giraph-图挖掘平台Giraph是GoogleP27Giraph

Timeline●

受Google

Pregel启发开发

(2010)●

被Yahoo!捐献给ASF

(2011)●

成为Top-level

Apache

Project

(2012)●

发布1.0版本

(2013)●

发布1.1版本

(2014)Giraph典型应用●

Ranking

Popularity,

Importance,

etc.●

Label

Propagation

Location,

School,

Interest,

gender,

etc.●

Community

Groups,

ClustersGiraphTimelineGiraph典型应用28

Map-only

Map-Reduce

Think

like

a

key-value

pairpublic

class

Mapper<

KEYIN

VALUEIN

KEYOUT

VALUEOUT>{

void

map(KEYIN

key,

VALUEIN

value,

Context

context)

throws

IOException,

InterruptedException;}

Giraph

Think

like

a

vertexpublic

class

Vertext<

I

extends

WritableComparable,

V

extends

Writable,

E

extends

Writable,

M

extends

Writable>{

void

compute(

Iterator<M>

msgIterator);} Map-onlyMap-Reduce Giraph29

Giraph

API(当前Vertex上

可用)I

getVertextId()V

getVertextValue()void

setVertextValue(V

vertextValue)Iterator<I>

iterator()E

getEdgeValue(I

targetVertextId)boolean

hasEdge(I

targetVertextId)boolean

addEdge(I

targetVertextId,

EedgeValue)E

removeEdge(I

targetVertextId)void

voteToHalt()boolean

isHalted()Giraph

API(Vertex间传递消息可用)

void

sendMsg(I

targetVertexid,

M

msg)

void

sendMsgToAllEdges(M

msg)

void

addVertextRequest(BasicVertex(I,

V,

E,

M>

vertex)

void

removeVertextRequest(I

vertexId)

void

addEdgeRequest(I

sourceVertexId,

Edge<I,

E>

edge)

void

removeEdgeRequest(I

sourceVertextId,

I

destVertextId) GiraphAPI(当前Vertex上GiraphAP30一个简单的例子

-

计算最大节点值public

class

MaxValueVertex

extends

EdgeListVertex<IntWritable,

IntWritable,

IntWritable,

IntWritable>{@overridepublic

void

compute(Iterator<IntWritable>

msgIterator){boolean

changed

=

false;while(msgIterator.hasNext()){IntWritable

msgValue

=

msgIterator.next();if(msgValue.get()

>

getVertexValue().get())}setVertexValue(msgValue);changed

=

true;

}}if(getSuperStep()

==

0

||

changed)

{sendMsgToAllEdges(getVertexValue());}

else

{voteToHalt();

}

}}一个简单的例子-计算最大节点值publicclass31复杂点的例子

-

PageRankpublic

class

SimplePageRankVertex

extends

EdgeListVertex<

LongWritable,

DoubleWritable,

FloatWritable,

DoubleWritable>{

@override

public

void

compute(Iterator<DoubleWritable>

msgIterator){

if(getSuperStep()

>=

1)

{

double

sum

=

0;

while(msgIterator.hasNext())

{

sum

+=

msgIterator.next().get();

}

setVertexValue(new

DoubleWritable((0.15f

/getNumVertices())

+

0.85f

*

sum);

}

if(getSuperStep()

<

300)

{

long

edges

=

getNumOutEdges();

sendMsgToAllEdges(newDoubleWritable(getVertexValue.get()

/

edges));

}

else

{

voteToHalt();

}

}}Mahout

(Hadoop)

854行复杂点的例子-PageRankpublicclass32豌豆荚知识图谱

+

Giraph用途●

用户性别、地域、教育水平的prediction●

用户内容消费社区的discovery●

Item/User-based

CF,支撑内容推荐●

作弊用户识别,

opinion

leader识别豌豆荚知识图谱+Giraph用途●用户性别、地域33总结总结34豌豆荚移动内容推荐框架豌豆荚知识图谱独有内容●●●应用内内容中解析出来的实体和实体关系信息(应用,游戏,书,视频,音乐等)豌豆荚用户贡献的User

profile信息和UGC内容用户-实体的关系(搜索、浏览、消费、评价等)豌豆荚知识图谱

+

Giraph●●●●用户属性prediction社区发现内容推荐spammer/opinion

leader发现豌豆荚移动内容推荐框架豌豆荚知识图谱独有内容●应用内内容中解35谢谢!谢谢!36每一次的加油,每一次的努力都是为了下一次更好的自己。12月-2212月-22Thursday,December29,2022天生我材必有用,千金散尽还复来。12:48:3312:48:3312:4812/29/202212:48:33PM安全象只弓,不拉它就松,要想保安全,常把弓弦绷。12月-2212:48:3312:48Dec-2229-Dec-22得道多助失道寡助,掌控人心方位上。12:48:3312:48:3312:48Thursday,December29,2022安全在于心细,事故出在麻痹。12月-2212月-2212:48:3312:48:33December29,2022加强自身建设,增强个人的休养。2022年12月29日12:48下午12月-2212月-22扩展市场,开发未来,实现现在。29十二月202212:48:33下午12:48:3312月-22做专业的企业,做专业的事情,让自己专业起来。十二月2212:48下午12月-2212:48December29,2022时间是人类发展的空间。2022/12/2912:48:3312:48:3329December2022科学,你是国力的灵魂;同时又是社会发展的标志。12:48:33下午12:48下午12:48:3312月-22每天都是美好的一天,新的一天开启。12月-2212月-2212:4812:48:3312:48:33Dec-22人生不是自发的自我发展,而是一长串机缘。事件和决定,这些机缘、事件和决定在它们实现的当时是取决于我们的意志的。2022/12/2912:48:33Thursday,December29,2022感情上的亲密,发展友谊;钱财上的亲密,破坏友谊。12月-222022/12/2912:48:3312月-22谢谢大家!每一次的加油,每一次的努力都是为了下一次更好的自己。12月-37移动环境下的内容推荐初探移动环境下的内容推荐初探38Agenda●

什么是推荐系统●

移动内容推荐的特点●

豌豆荚移动内容推荐关键技术●

总结Agenda●什么是推荐系统●移动内容推荐的特点39什么是推荐系统什么是推荐系统40Recommender

systems

orrecommendation

systems

(sometimesreplacing

"system"

with

a

synonym

suchas

platform

or

engine)

are

a

subclass

ofinformation

filtering

system

that

seek

topredict

the

'rating'

or

'preference'

thatuser

would

give

to

an

item.-

from

wikipediaRecommendersystemsorrecommen41Recommender

systems/engines

are

asubclass

of

information

retrievalsystems/engines

in

passive

mode.Search

systems/engines

are

a

subclassof

information

retrieval

systems/enginesin

active

mode.Recommendersystems/enginesar42常用的推荐功能●

有哪些值得看的电影?●

去哪儿下馆子腐败?●

淘点啥宝贝?●

装什么有意思的应用?●

大家都在讨论什么话题?●

Netflix

Prize

$1

Million

Challenge?常用的推荐功能●有哪些值得看的电影?●装什么有意43应用场景排行榜推荐个性化推荐使用海量数据电影推荐多多是餐馆推荐多少是商品推荐多多是应用推荐多多是话题推荐多少是广告推荐少多是推荐技术应用场景应用场景排行榜推荐个性化推荐使用海量数据电影推荐多多是餐馆推44推荐用户(User)海量数据是推荐之本

推荐位置

推荐位所在页面内容

推荐位在页面中位置

推荐物品(Item)推荐物品

种类、主题、关键词

生命周期、投放规则

大小、颜色、价格

…...推荐用户

人口学属性(性别、年

龄等)

行为属性/兴趣特征(浏

览、搜索、缓存)

Social内容(社交关系

、小组发帖)

上下文(时间、地点等)●…...推荐用户(User)海量数据是推荐之本推荐物品推荐用户●….45

推荐算法

关键规则挖掘协同过滤

CF(User-based

CF,

Item-

based

CF)

矩阵分解

图挖掘

基于热度/知识/规则的推荐

基于内容的推荐

基于预测模型的推荐

混合推荐方法推荐算法

推荐用户

用户行为属性

Social内容

人口学属性

行为属性/兴趣

特征

用户全局画像

推荐场景一个用户在多个物品

有行为

用户-物品行为矩阵

不能过于稀疏用户对物品的兴趣规

律可观察

适用于解决冷启动

(cold

start)问题真实系统大都这么做 推荐算法推荐算法 推荐场景46推荐算法优点缺点示例基于知识的推荐算法(基于人工观察和经验,抽象出规则进行推荐)1.方法简单2.规则易解释、易运营3.所需数据少1.规则来源于人工知识,覆盖率差2.有效周期难以判断好友推荐基于内容的推荐算法1.可以解决冷启动问题2.方便整合各种用户/物品特征3.推荐结果易于理解1.受限于特征提取的准确性2.需要大量的支撑数据3.常局限于特征稀疏的情况GoogleNewsAmazon淘宝豌豆荚协同过滤的推荐算法1.原理简单有效,易于理解2.算法灵活,支持海量用户/物品3.无需考虑复杂特征,支持特征空间极其复杂的用户/物品的高效计算1.很明显的冷启动问题2.常受限于用户/物品行为矩阵稀疏的情况3.受限于用户/物品rating的正确性Netfix淘宝Amazon豆瓣豌豆荚常用推荐算法比较推荐算法优点缺点示例基于知识的推荐算法(1.方法简单1.规则47协同过滤-User-based

CF协同过滤-Item-based

CF协同过滤-User-basedCF协同过滤-Item-ba48移动推荐的特点移动推荐的特点49使用次数多时间碎片化使用次数多时间碎片化50内容消费占大头用户易定位(用户<->设备)内容消费占大头用户易定位(用户<->设备)51特点原因实时推荐非常重要移动设备/应用使用次数多推荐的准确率要求更高移动设备/应用使用时间碎片化内容推荐是关键移动设备/应用消费中内容是大头可利用用户信息更丰富移动设备可以用来准确定位用户移动推荐的新特点特点原因实时推荐非常重要移动设备/应用使用次数多推荐的准确率52豌豆荚移动内容推荐关键技术豌豆荚移动内容推荐关键技术53豌豆荚移动内容推荐框架豌豆荚移动内容推荐框架54关键技术之知识图谱关键技术之知识图谱55知识图谱

-

Knowledge

Graph

Knowledge

Graph

understands

real-world

entities

and

their

relationships

to

one

another:

things,

not

strings,

helps

the

machine

to

understand

the

world

a

bit

more

like

people

do.Knowledge

Graph

consists

of

nodes

with

edgesbetween

them.

Each

node

corresponds

to

an

entity

inreal

work,

each

edge

describe

the

relationship

betweenthe

begin

and

end

nodes.知识图谱-KnowledgeGraphKnowledg56Google

Knowledge

GraphData

Sources●

Public

Sources(Wikipedia,

Freebase,CIA

World

Factbook)●

Knowledge

Mining

from

Webpages(Lists,

Tables,

etc.)●

Knowledge

Mining

from

user

queries(xxattributes

of

yy

entity)GoogleKnowledgeGraphDataSou57Google

Knowledge

Graph

Usages

Find

the

right

thing

Recognize

the

entities

in

queries

and

associates

them

with

the

relevant

information,

and

disambiguate

entities

using

context

information.

Get

the

best

summary

Use

the

users

search

behavior

to

determine

the

most

needed

aspects

for

each

entity.

Go

deeper

and

broader○Help

users

to

get

some

unexpected

discoveries.GoogleKnowledgeGraph○Helpus58移动环境下的内容推荐初探课件59豌豆荚知识图谱数据来源●

公开来源(Wikipedia,

Freebase,

IMDB、豆瓣电影)●

应用内内容/网页信息中解析出来的实体

和实体关系信息(应用,游戏,书,视频

,音乐等)●

豌豆荚用户贡献的User

profile信息和UGC内容●

用户-实体的关系(搜索、浏览、消费、豌豆荚知识图谱数据来源●公开来源(Wikipedia60豌豆荚知识图谱数据来源●

公开来源(Wikipedia,

Freebase,

IMDB、豆瓣电影)●

应用内内容/网页信息中解析出来的实体

和实体关系信息(应用,游戏,书,视频

,音乐等)●

豌豆荚用户贡献的User

profile信息和UGC内容●

用户-实体的关系(搜索、浏览、消费、豌豆荚知识图谱数据来源●公开来源(Wikipedia61豌豆荚知识图谱

用途

信息展示○全面展示内容相关的实体及相互关系●

用户意图理解○○重名区分查询意图识别●

内容推荐○○○○豌豆荚首页内容推荐

-

追新有趣豌豆荚详情页内容推荐

-

相关而非相似豌豆荚各频道列表页内容推荐

-

追热有趣…...豌豆荚知识图谱○全面展示内容相关的实体及相互关系●用62关键技术之Giraph-图挖掘平台关键技术之Giraph-图挖掘平台63Giraph

-

图挖掘平台Giraph

是Google

Pregel的开源实现,它基于Hadoop,通过在Hadoop上运行map-only的job来实现常见的图挖掘算法。Giraph

提供了一个简单的“面向节点”(Think

like

a

vertex)的编程模型。所有的图挖掘算法都可简化为在每一个Vertex上的两类操作:1)

在vertext上进行数值计算(computation);2)

将数值计算的结果通过边传递给相邻的全部/部分节点(communication)。上述编程模型极大简化了图挖掘算法的实现,使得每个算法都可以迭代地实现,这一切是建立在Giraph内嵌的bulksynchronous

parallel编程模型基础上。Giraph-图挖掘平台Giraph是GoogleP64Giraph

Timeline●

受Google

Pregel启发开发

(2010)●

被Yahoo!捐献给ASF

(2011)●

成为Top-level

Apache

Project

(2012)●

发布1.0版本

(2013)●

发布1.1版本

(2014)Giraph典型应用●

Ranking

Popularity,

Importance,

etc.●

Label

Propagation

Location,

School,

Interest,

gender,

etc.●

Community

Groups,

ClustersGiraphTimelineGiraph典型应用65

Map-only

Map-Reduce

Think

like

a

key-value

pairpublic

class

Mapper<

KEYIN

VALUEIN

KEYOUT

VALUEOUT>{

void

map(KEYIN

key,

VALUEIN

value,

Context

context)

throws

IOException,

InterruptedException;}

Giraph

Think

like

a

vertexpublic

class

Vertext<

I

extends

WritableComparable,

V

extends

Writable,

E

extends

Writable,

M

extends

Writable>{

void

compute(

Iterator<M>

msgIterator);} Map-onlyMap-Reduce Giraph66

Giraph

API(当前Vertex上

可用)I

getVertextId()V

getVertextValue()void

setVertextValue(V

vertextValue)Iterator<I>

iterator()E

getEdgeValue(I

targetVertextId)boolean

hasEdge(I

targetVertextId)boolean

addEdge(I

targetVertextId,

EedgeValue)E

removeEdge(I

targetVertextId)void

voteToHalt()boolean

isHalted()Giraph

API(Vertex间传递消息可用)

void

sendMsg(I

targetVertexid,

M

msg)

void

sendMsgToAllEdges(M

msg)

void

addVertextRequest(BasicVertex(I,

V,

E,

M>

vertex)

void

removeVertextRequest(I

vertexId)

void

addEdgeRequest(I

sourceVertexId,

Edge<I,

E>

edge)

void

removeEdgeRequest(I

sourceVertextId,

I

destVertextId) GiraphAPI(当前Vertex上GiraphAP67一个简单的例子

-

计算最大节点值public

class

MaxValueVertex

extends

EdgeListVertex<IntWritable,

IntWritable,

IntWritable,

IntWritable>{@overridepublic

void

compute(Iterator<IntWritable>

msgIterator){boolean

changed

=

false;while(msgIterator.hasNext()){IntWritable

msgValue

=

msgIterator.next();if(msgValue.get()

>

getVertexValue().get())}setVertexValue(msgValue);changed

=

true;

}}if(getSuperStep()

==

0

||

changed)

{sendMsgToAllEdges(getVertexValue());}

else

{voteToHalt();

}

}}一个简单的例子-计算最大节点值publicclass68复杂点的例子

-

PageRankpublic

class

SimplePageRankVertex

extends

EdgeListVertex<

LongWritable,

DoubleWritable,

FloatWritable,

DoubleWritable>{

@override

public

void

comp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论