KHAI THÁC MỐI QUAN HỆ XÃ HỘI TRONG MẠNG XÃ HỘI TWITTER - Pdf 26

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
________ ________
BÀI THU HOẠCH
CHUYÊN ĐỀ CƠ SỞ DỮ LIỆU NÂNG CAO
KHAI THÁC MỐI QUAN HỆ XÃ HỘI TRONG MẠNG
XÃ HỘI TWITTER
Giáo viên hướng dẫn:
PGS TS.ĐỖ PHÚC
Học viên thực hiện:
Thái Hồng Quang
CH1101033
Lớp:
Page 1
Thạc sỹ CNTT qua mạng khoá 06
MỞ ĐẦU
Ngày nay, sự phát triển của công nghệ thông tin nói chung và kiến trúc mạng nói riêng
đã và đang đạt được những bước tiến nhất định. Công nghệ thông tin đang dần được
đưa vào ứng dụng trong mọi lĩnh vực của cuộc sống, từ việc điều khiển các thiết bị
một cách tự động, hỗ trợ hoạt động kinh doanh, sản xuất của con người, cho đến việc
giả lập chính xã hội loài người – mạng xã hội.
Mạng xã hội ra đời đã trở thành một trào lưu mới trong mọi tầng lớp sử dụng máy tính
và Internet làm công cụ giao lưu, tìm kiếm kiến thức. Mạng xã hội giúp thu hẹp
khoảng cách giữa người với người, góp phần biến thế giới mà chúng ta đang sinh sống
trở thành một “thế giới phẳng”. Với khả năng kết nối, chia sẻ thông tin một cách dễ
dàng, mạng xã hội dần trở thành một kho kiến thức khổng lồ. Và từ đây, nhu cầu tìm
kiếm, phân tích lượng thông tin khổng lồ trong rất nhiều mạng xã hội đang tồn tại và
phát triển trở nên cần thiết hơn bao giờ hết.
Tuy thế, các công nghệ tìm kiếm hiện tại đứng đầu là Google đều chưa thể tận dụng
hết khả năng của mạng xã hội. Bởi lẽ mạng xã hội có cấu trúc rất mở, các thành phần
được gắn kết với nhau theo dạng quan hệ (một chiều, hai chiều) nên việc tìm kiếm

Page 3
1.1 Lịch sử Mạng xã hội
Mạng máy tính (tiếng Anh: computer network) ra đời làm nền tảng cho sự xuất hiện
của mạng xã hội.
Có một vài cách tiếp cận khác nhau về mạng xã hội. Cách tiếp cận đầu tiên cho rằng
mạng xã hội là một nơi để mọi người có thể tương tác với nhau thông qua các phòng
trò chuyện (tiếng Anh: chat room), chia sẻ thông tin cá nhân, ý tưởng qua các chủ đề
được tạo lập trên những trang cá nhân, mà về sau này được gọi là “blogging”. Những
mạng xã hội dạng này thì đã xuất hiện từ năm 1985 với THE WELL, Theglobe.com
(1994), Geocities (1995) và Tripod (1995).
Còn với một cách tiếp cận khác, đơn giản hơn thì mạng xã hội là nơi mà mọi người có
thể kết nối với nhau thông qua địa chỉ thư điện tử của họ. Mạng xã hội đầu tiên của
dạng này – Classmates Error: Reference source not found – ra đời vào năm 1995 với
mục đích kết nối học, tiếp đó SixDegrees được tạo ra vào năm 1997 là với mục đích
giao lưu kết dựa theo sở thích.
Năm 2002, Friendster Error: Reference source not found ra đời và mau chóng trở
thành trào lưu tại Mỹ. Tuy vậy do phát triển quá nhanh mà thiếu đi sự tính toán đối
với phân tải đã khiến các server của dịch vụ này hay bị xảy ra hiện tượng quá tải.
Công ty này sau đó có được Google đề nghị mua lại với trị giá khoảng 30 triệu đô la
Mỹ tuy nhiên thương vụ không thành công.
Năm 2004, MySpace Error: Reference source not found đi vào hoạt động, nhanh
chóng nổi bật với các tính năng mới hấp dẫn, trong đó phải kể đến tính năng chia sẻ
nhạc. Dịch vụ này đã thu hút được rất nhiều các ban nhạc tham gia vào mạng xã hội
MySpace, từ đó giúp cho mạng xã hội này có thêm được rất nhiều những thành viên
quan tâm, để rồi trở thành mạng xã hội lớn nhất thế giới cho tới tận thời điểm hiện
nay.
Năm 2006 đánh dấu sự có mặt của Facebook Error: Reference source not found (thực
ra là việc mở rộng phạm vi của mạng xã hội này ra toàn cầu thay vì cho cộng đồng các
trường đại học tại Mỹ vốn đã tồn tại từ năm 2004), một mạng xã hội “mở”. Facebook
cung cấp một nền tảng lập trình gọi là Facebook Platform cho phép những thành viên

Habbo 2000 (Phần Lan) 117 triệu 3812
hi5 27/6/2003 80 triệu 24
LinkedIn Tháng 5/2003 40 triệu 101
Page 5
MySpace Tháng 8/2003 Khoảng 253 triệu 9
Netlog 2004 42 triệu 99
Orkut 22/1/2004 67 triệu 107
Reunion
(MyLife.com)
2002 51 triệu 2555 (1086)
Tagged Tháng 10/2004 70 triệu 72
Twitter 2006 25 triệu 49
Windows live
spaces
Đầu năm 2004 120 triệu 5
1.2 Đặc điểm Mạng xã hội (ảo)
Error: Reference source not found
Có thể nói Mạng xã hội có thể phát triển mạnh mẽ được như hiện nay là do những ưu
thế đáng kể mà chúng mang lại so với các cách tiếp cận cộng đồng truyền thống.
Đầu tiên là vấn đề chi phí. Có thể thấy rằng việc tham gia vào một mạng xã hội, dù là
đối với một cá nhân hay một tổ chức đều chiếm một chi phí tương đối thấp, bởi trên
thực tế, các mạng xã hội hiện nay hầu hết cho phép đăng ký và sử dụng miễn phí.
Trong khi đó, khi đã trở thành một thành viên của một mạng xã hội, các cá nhân hay
tổ chức đó có thể có được rất nhiều thông tin hữu ích cho mối quan tâm, sự phát triển
của mình. Ví dụ như một công ty sau khi tham gia một mạng xã hội nào đó, có thể chỉ
cần vài cú nhấp chuột là đã có thể tìm hiểu về các sở thích của người dùng, xu hướng
của những sở thích đó. Qua đó, công ty có thể phát hiện ra được những khách hàng
tiềm năng, vạch ra một chiến lược kinh doanh mới cho thời kỳ khó khăn … Những
việc làm này có thể giúp ích rất nhiều cho hoạt động kinh doanh hiện tại của công ty
đó.

không tốt có thể tìm hiểu nhiều thứ khác hơn về người dùng đó. Điều đó có thể làm
ảnh hưởng tới lợi ích cá nhân của người dùng đó ngay trong thời điểm hiện tại cũng
như tương lai. Biết đâu một bức ảnh xưa cũ có thể được lôi ra để làm hại tới thanh
danh của người dùng đó về sau này???
Page 7
Vấn đề thứ hai nằm ở chính cơ chế vận hành của các mạng xã hội. Mạng xã hội cũng
như mọi trang web khác, đều phải giải quyết các vấn đề liên quan tới bảo mật thông
tin. Thêm vào đó, các trang mạng xã hội còn gặp phải một số vấn đề riêng ví dụ như
tình trạng nhắn tin rác làm phiền những thành viên tham gia, sử dụng những công cụ
tự viết. Vấn đề này xuất hiện khá nhiều trên các phương tiện thông tin đại chúng gần
đây, có thể lấy ví dụ về vài sự cố các tài khoản mạng xã hội của những người nổi tiếng
bị hacker kiểm soát, những thông tin nhạy cảm được tung ra …
Một điểm nữa cần nói tới trong mặt hạn chế của mạng xã hội là việc tiêu tốn thời gian
sử dụng. Việc tham gia một mạng xã hội, kiểm tra các thay đổi gần đây từ bè, cập
nhật những thay đổi, thông tin cho chính mình nhiều khi làm mất thời gian của người
tham gia. Tất nhiên điều này còn tùy thuộc vào cách từng người phân phối thời gian
của mình cho việc “online” trên các mạng xã hội mà họ tham gia. Tuy vậy theo những
phân tích gần đây thì có tình trạng khá nhiều người trẻ bị hội chứng “nghiện” khi tham
gia mạng xã hội. Nếu tình trạng này xảy ra ở diện rộng thì sẽ có rất nhiều hiệu ứng
không tốt kèm theo.
Như vậy, cũng như những dịch vụ khác triển khai và khai thác trên nền Internet, mạng
xã hội cũng thể hiện được những ưu và nhược điểm nhất định. Nhược điểm của mạng
xã hội phần lớn kế thừa từ những nhược điểm vốn có của các dịch vụ nền web, nhưng
những ưu điểm của dịch vụ này lại mang tính chất đột phá so với các cách thức truyền
thông cộng tác truyền thống. Như trong một cuốn sách với tựa đề Groundswell của
nhà xuất bản Forrester Research ra đời năm 2008, mạng xã hội và tác động của nó đã
được mô tả với thuật ngữ “groundswell”, tạm hiểu là: “một bước tiến tự nhiên của
loài người khi sử dụng các công cụ trên mạng để kết nối, tích lũy kiến thức, lấy những
gì họ cần – thông tin, hỗ trợ, các ý tưởng, các sản phẩm hay khả năng thương lượng
với cộng đồng”

Hiện tại cũng có một số phần mềm cho phép phân tích, xử lý các thông tin dựa trên
quan hệ kiểu như trên Error: Reference source not found. Tuy nhiên có thể nhận thấy
rằng, hầu hết những công cụ đó cần phải có một cơ sở dữ liệu đầu vào để tạo ra đồ thị
quan hệ, thông thường là từ một kiểu file cơ sở dữ liệu như CSV, XML … từ đó mới
bắt đầu thực thi các phân tích liên quan tới đồ thị quan hệ đó. Việc thu thập các nút,
quan hệ giữa các nút hay các thuộc tính khác thường không được định nghĩa mà có
thể nhờ một phần mềm khác, hay cũng có thể do người dùng trực tiếp đưa vào. Cách
Page 9
thức này hạn chế ở điểm sẽ khó nắm bắt được các thay đổi trên mạng xã hội mang
tính chất “thời gian thực” (tiếng Anh: realtime).Với API của twitter mà trong bài thu
hoạch này tạo các bước thu thập dữ liệu từ một quan hệ để làm cơ sở cho tính toán các
mối quan hệ xã hội
Page 10
CHƯƠNG 3: XÂY DỰNG MẠNG TRI THỨC CHO MẠNG XÃ HỘI
Về cơ bản, một mạng xã hội sẽ cho phép người dùng tạo ra cho mình một “profile”
Error: Reference source not found (tạm hiểu là một trang thông tin cá nhân). Ở trang
cá nhân đó, người dùng có khả năng tùy chỉnh về giao diện, các bài viết, các thành
phần theo sở thích cá nhân. Họ cũng có thể đăng tải hình ảnh đại diện (tiếng Anh:
avatar), hoặc tạo ra những album ảnh cá nhân để chia sẻ cùng mọi người. Một cơ chế
quan trọng nữa của mỗi mạng xã hội là bè – friends. Cơ chế kết trong các mạng xã
hội thường là khi muốn kết với ai đó, người dùng phải được người kia chấp nhận lời
mời. Một vài mạng xã hội có một cơ chế khác là Favorites (tạm hiểu: các thông tin ưa
thích) giúp cho họ có thể theo dõi một số hoạt động của người khác mà không cần
phải có quan hệ bè với người kia. Do vậy các mạng xã hội cũng phải cung cấp thêm
các tính năng cơ bản cho việc xác định quyền hạn đối với người xem, bè. Cơ chế này
đơn giản nhất là cho phép hay không cho phép những người chưa có kết nối bè xem
các thông tin có trên trang cá nhân, hay chặn một số người ác ý xuất hiện trên mạng
xã hội.
Đó là cấu trúc cơ bản của một mạng xã hội, ngoài ra các mạng xã hội có thể cung cấp
thêm các tính năng khác giúp làm cho người dùng thấy thoải mái nhất khi tham gia.

cơ bản như blog (nhật ký ảo), friend list (danh sách bè), blast, list (danh sách sở
thích), comment (bình luận), tag, sms (nhắn tin)…
Blog là thành phần trong một trang cá nhân Twitter. Đây là nơi cho người dùng viết
lên những suy nghĩ, cảm xúc … về mọi thứ diễn ra xung quanh, nên nó còn được gọi
là nhật ký ảo. Mỗi một bài viết như vậy còn được gọi là một entry. bè của người viết
sẽ vào xem những bài viết như vậy, để lại những lời bình luận, đánh giá nếu muốn.
Page 12
Friend list chính là điểm cấu thành mạng xã hội Twitter. Friend list chỉ ra mối quan
hệ giữa các cá thể trong mạng xã hội Twitter, ở đây là mối quan hệ bè. Nhờ có danh
sách bè này mà ta có thể biết được tất cả bè của một người. Việc thăm danh sách bè
của một người để tìm ra bè của người đó, rồi cứ tiếp tục thăm dần dần tới những
người đó để lại tiếp tục tìm ra bè của họ sẽ giúp ta lan tỏa dần trong đồ thị mạng xã
hội Twitter. Việc này không khác gì với việc làm sao để thăm tất cả các nút trong một
đồ thị vô hướng, vấn đề chỉ còn là thuật toán và cách thức tiến hành việc thăm sao cho
công sức bỏ ra là nhỏ nhất.
Blast cũng là một thành phần khá thú vị trong Twitter. Blast có thể là một lời giới
thiệu, mẩu tin nhỏ, một đường siêu liên kết, hay đơn giản là suy nghĩ trong đầu người
viết tại thời điểm đó. Blast được đặt ở vị trí đầu của trang cá nhân Twitter, điều này
giúp cho blast trở thành thứ được để ý đầu tiên khi ghé thăm một trang cá nhân. Nếu
một trang cá nhân Twitterđược ví như một cuốn nhật ký, một cuốn sách thì có lẽ blast
sẽ đóng vai trò như lời mở đầu, lời đề tựa cho cuốn nhật ký, cho cuốn sách đó.
Một thành phần khác trong Twittercũng rất thu hút đối với những người tham gia
mạng xã hội này là hệ thống các comment hay còn gọi là bình luận. Với hệ thống này,
những người tham gia có thể trao đổi những dòng tin ngắn với nhau, về một chủ để
nào đó, về vấn đề trong bài viết của người viết … Với hệ thống này, những người có
thể thể hiện sự quan tâm đến nhau, nhờ đó duy trì mối quan hệ bè.
Ngoài ra Twittercòn có các thành phần khác nhằm giúp người dùng tìm ra những
người có cùng sở thích với mình như Lists. Hay Tag cloud giúp tạo ra các từ khóa
(tiếng Anh: keyword) nhằm hệ thống hóa các bài viết mà người dùng đã soạn.
Với những đặc điểm như trên, Twitterđã và đang là dịch vụ mạng xã hội được sử dụng

Lấy thông tin mở rộng của twitter
import twitter
import json
Page 14
screen_name = 'timoreilly'
t = twitter.Twitter(domain='api.twitter.com', api_version='1')
response = t.users.show(screen_name=screen_name)
print json.dumps(response, sort_keys=True, indent=4)
Vì vậy OAuth cung cấp một cách để cho phép một ứng dụng để truy cập dữ liệu đã
được lưu trữ trong ứng dụng khác mà không cần phải chia sẻ tên người dùng và mật
khẩu của . IETF OAuth 2.0 Protocolspec là gần như không đáng sợ như nó có thể , và
sẽ mất một ít thời gian để lướt qua nó bởi vì OAuth ở khắp mọi nơi, đặc biệt là trong
bối cảnh mạng xã hội
3.4 Machine Thu Thập dữ liệu
Về nguyên tắc, lấy dữ liệu Twitter là đơn giản: tạo một yêu cầu, lưu trữ các phản
ứng,và lặp lại khi cần thiết. Nhưng tất cả các loại công cụ thế giới thực và những
pesky API tỷ lệ giới hạn. nó không quákhó khăn để xử lý các vấn đề như vậy, miễn là
làm một chút ve phía trước lập kế hoạch và dự đoánnhững điều có thể (và sẽ) đi sai.
Page 15
Khi thực hiện một chương trình trong thời gian dài điều này sẽ làm tốn nhiều tỉ lệ gới
hạn.việc viết mã robust là đặc biệt quan trọng . Ta cần phải nắm giữ các điều kiện đặc
biệt có thể xảy ra .để thực hiện cách khắc phục tình hình tốt nhất và sự kiện tốt nhất là
không đủ lưu các trạng thái và bõ các chỉ dẫn làm thế nào để bỏ đi. Nói cách khác, khi
viết dữ liệu thu hoạch mã cho một nền tảng như Twitter, phải thừa nhận rằng nó sẽ
ném bóng đường cong ở . Có sẽ có điều kiện không điển hình sẽ phải xử lý, và chúng
thường xuyên hơn mức hơn
ngoại lệ
Code phát triển là semi-rugged trong đó nó đề với những điều phổ biến nhất mà có
thể đi sai và khuôn mẫu để các có thể dễ dàng mở rộng nó để xử lý mới trường hợp
nếu và khi họ phát sinh. Điều đó nói rằng, có hai lỗi HTTP cụ thể rằng đang rất có

f = file('%s.friend_ids' % str(cursor), 'wb')
cPickle.dump(ids, f)
f.close()
exit()
try:
response = t.friends.ids(screen_name=SCREEN_NAME, cursor=cursor)
ids.extend(response['ids'])
wait_period = 2
except twitter.api.TwitterHTTPError, e:
Page 17
if e.e.code == 401:
print 'Encountered 401 Error (Not Authorized)'
print 'User %s is protecting their tweets' % (SCREEN_NAME, )
elif e.e.code in (502, 503):
print 'Encountered %i Error. Trying again in %i seconds' % (e.e.code,
wait_period)
time.sleep(wait_period)
wait_period *= 1.5
continue
elif t.account.rate_limit_status()['remaining_hits'] == 0:
status = t.account.rate_limit_status()
now = time.time() # UTC
when_rate_limit_resets = status['reset_time_in_seconds'] # UTC
sleep_time = when_rate_limit_resets - now
print 'Rate limit reached. Trying again in %i seconds' % (sleep_time,
)
time.sleep(sleep_time)
continue
cursor = response['next_cursor']
print 'Fetched %i ids for %s' % (len(ids), SCREEN_NAME)

for
Page 19
triệu tập tin có thể không mang lại một hồ sơ hiệu suất mong muốn. Nếu các ứng dụng
có sử dụng các dữ liệu sau đó trở thành luồng, có thể kết thúc với nhiều nhà văn cần
để truy cập vào 92 | Chương 4: Twitter: bè, những người theo và Setwise hoạt động
cùng một tập tin cùng một lúc, vì vậy sẽ phải bắt đầu giao dịch với tập tin khóa và
như vậy
những điều. Mà có lẽ không phải là một nơi muốn đi. Tất cả chúng ta thực sự cần
trong trường hợp này là một hệ thống giúp trivially dễ dàng lưu trữ cơ bản chìa
khóa/cặp giá trị và một đơn giản chính vi mã hóa lược đồ-một cái gì đó như một đĩa
sao từ điển sẽ là một khởi đầu tốt. Điều này
tiếp theo đoạn chứng tỏ xây dựng một khóa bởi concatenating ID, de-limiter, và dữ
liệu cấu trúc tên người dùng
s = {}
s["screen_name1$friend_ids"] = [1,2,3, ]
s["screen_name1$friend_ids"] # returns [1,2,3, ]
Nhưng nó sẽ không được tốt nếu bản đồ tự động có thể tính toán thiết lập hoạt động
do đó chỉ có thể nói với nó để làm một cái gì đó như
s.intersection("screen_name1$friend_ids", "screen_name1$follower_ids")
để tự động tính toán " bè lẫn nhau" cho một Twitterer (ví dụ, để tìm ra đó của bè của
họ đang theo dõi chúng trở lại)? Vâng, đó là một dự án mã nguồn mở được gọi là
Redisthat cung cấp exactlythat loại khả năng. Redis là tầm thường để cài đặt,
blazingly nhanh (viết bằng C), quy mô tốt,tích cực được duy trì, và có một khách hàng
Python tuyệt vời với đi kèm với tài liệu hướng dẫn có sẵn. Tham gia Redis cho một ổ
đĩa thử nghiệm đơn giản như cài đặt itand bắt đầu lên máy chủ.(Windows người dùng
có thể lưu bản thân một số đau đầu bởi grabbing một binarythat của bảo trì bởi
servicestack.net.) Sau đó, chỉ cần chạy easy_install redisto có được một khách hàng
Python đẹp mà cung cấp truy cập tầm thường để mọi điều nó đã cung cấp. Ví dụ, đoạn
trước đó dịch để Redis sau
Code:

Như đã đề cập đến Redis cung cấp hoạt động cho máy tính phổ biến tập hoạt động.
Một vài trong số những người phù hợp nhất cho công việc ở bàn tay sắp tới bao gồm
Smembers : Trả về tất cả các thành viên của bộ
Scard: Trả về cardinality một tập (số thành viên trong tập)
Sinter : Tính giao cho danh sách của bộ
Sdiff: Tính sự khác biệt cho một danh sách các bộ
Mget:Trả về một danh sách các chuỗi giá trị cho một danh sách các khóa
Mset: lưu trữ một danh sách các chuỗi giá trị đối với một danh sách các khóa
Sad: Thêm một mục vào một bộ (và tạo ra các thiết lập nếu nó không tồn tại)
Keys : Trả về một danh sách các khóa phù hợp với một mô hình like_regex
3.7 Souping Up the Machine với Friend /Follower Metrics
Redis sẽ phục vụ tốt yêu cầu của hiệu quả xử lý và phân tích rộng lớn khối lượng dữ
liệu Twitter cho một số loại truy vấn. Điều chỉnh một số bổ sung logic để nhà dữ liệu
trong Redis yêu cầu chỉ một thay đổi đơn giản, Cập Nhật mà tính một số số liệu thống
kê cơ bản bè/đi theo. Native functions trong Redis được sử dụng để tính toán các hoạt
động thiết lập
Thu hoạch, lưu trữ, và tính toán thống kê về bè và những người theo
(friends_followers__friend_follower_symmetry.py)
import sys
import locale
import time
import functools
Page 22
import twitter
import redis
from twitter__login import login
# A template-like function for maximizing code reuse,
# which is essentially a wrapper around makeTwitterRequest
# with some additional logic in place for interfacing with
# Redis

n_followers_diff_friends = r.sdiffstore('temp',
[getRedisIdByScreenName(screen_name,'follower_ids'),
getRedisIdByScreenName(screen_name,'friend_ids')])
r.delete('temp')
n_friends_inter_followers = r.sinterstore('temp',
[getRedisIdByScreenName(screen_name, 'follower_ids'),
getRedisIdByScreenName(screen_name, 'friend_ids')])
r.delete('temp')
print '%s is following %s' % (screen_name, locale.format('%d', n_friends, True))
Page 24
print '%s is being followed by %s' % (screen_name, locale.format('%d',
n_followers, True))
print '%s of %s are not following %s back' %
(locale.format('%d',n_friends_diff_followers, True), locale.format('%d', n_friends,
True),screen_name)
print '%s of %s are not being followed back by %s' %
(locale.format('%d',n_followers_diff_friends, True), locale.format('%d', n_followers,
True),A Lean, Mean Data-Collecting Machine | 97screen_name)
print '%s has %s mutual friends' \% (screen_name, locale.format('%d',
n_friends_inter_followers, True))
Giải quyết thông tin người dùng cơ bản như màn hình tên từ IDS
(friends_import sys
import json
import redis
from twitter__login import login
# A makeTwitterRequest call through to the /users/lookup
# resource, which accepts a comma separated list of up
# to 100 screen names. Details are fairly uninteresting.
# See also />from twitter__util import getUserInfo
if __name__ == "__main__":


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status