You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

utils.py 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. import numpy as np
  2. from datetime import datetime
  3. import time
  4. import calendar
  5. def convert_date_to_seconds(date_str):
  6. date = date_str.split()
  7. month = list(calendar.month_abbr).index(date[1])
  8. day = int(date[2])
  9. year = int(date[5])
  10. time_arr = date[3].split(':')
  11. t = datetime(year, month , day, int(time_arr[0]), int(time_arr[1]) , int(time_arr[2]))
  12. return int(time.mktime(t.timetuple()))
  13. class User(object):
  14. def __init__(self, user):
  15. self.user = user
  16. super(User, self).__init__()
  17. @property
  18. def vector(self):
  19. return np.array([self.length_of_user_description,
  20. self.length_of_username,
  21. self.friends_count,
  22. self.statuses_count,
  23. self.registration_age,
  24. self.is_verified,
  25. self.is_geo_enabled,
  26. self.gender])
  27. @property
  28. def length_of_user_description(self):
  29. # TODO: make it correctly
  30. if self.user['user_description']:
  31. return len(self.user['user_description'])
  32. else:
  33. return 0
  34. @property
  35. def length_of_username(self):
  36. # TODO: make it correctly
  37. return len(self.user['screen_name'])
  38. @property
  39. def followers_count(self):
  40. return self.user['followers_count']
  41. @property
  42. def friends_count(self):
  43. return self.user['friends_count']
  44. @property
  45. def statuses_count(self):
  46. return self.user['statuses_count']
  47. @property
  48. def registration_age(self):
  49. now = time.time()
  50. days = (now - self.user['user_created_at'])
  51. return int(days)
  52. @property
  53. def is_verified(self):
  54. # verified: 1
  55. # not verified: 0
  56. return 1 if self.user['verified'] else 0
  57. @property
  58. def is_geo_enabled(self):
  59. # enabled: 1
  60. # not enabled: 0
  61. return 1 if self.user['user_geo_enabled'] else 0
  62. @property
  63. def gender(self):
  64. return 1 if self.user['gender']=='m' else 0
  65. @property
  66. def time_of_tweet(self):
  67. return self.user['t']
  68. @property
  69. def id(self):
  70. return self.user['uid']
  71. @property
  72. def text(self):
  73. return self.user['text']
  74. class TUser(object):
  75. def __init__(self, user):
  76. self.user = user
  77. super(TUser, self).__init__()
  78. @property
  79. def vector(self):
  80. return np.array([self.length_of_user_description,
  81. self.length_of_username,
  82. self.followers_count,
  83. self.friends_count,
  84. self.statuses_count,
  85. self.registration_age,
  86. self.is_verified,
  87. self.is_geo_enabled])
  88. @property
  89. def length_of_user_description(self):
  90. # TODO: make it correctly
  91. if self.user['description']:
  92. return len(self.user['description'])
  93. else:
  94. return 0
  95. @property
  96. def length_of_username(self):
  97. # TODO: make it correctly
  98. return len(self.user['name'])
  99. @property
  100. def followers_count(self):
  101. return self.user['followers_count']
  102. @property
  103. def friends_count(self):
  104. return self.user['friends_count']
  105. @property
  106. def statuses_count(self):
  107. return self.user['statuses_count']
  108. @property
  109. def registration_age(self):
  110. now = time.time()
  111. days = now - convert_date_to_seconds( self.user['created_at'])
  112. return int(days)
  113. return 0
  114. @property
  115. def is_verified(self):
  116. # verified: 1
  117. # not verified: 0
  118. return 1 if self.user['verified'] else 0
  119. @property
  120. def is_geo_enabled(self):
  121. # enabled: 1
  122. # not enabled: 0
  123. return 1 if self.user['geo_enabled'] else 0
  124. @property
  125. def time_of_tweet(self):
  126. return convert_date_to_seconds(self.user['created_at'])
  127. @property
  128. def gender(self):
  129. return 1 if self.user['gender']=='m' else 0
  130. @property
  131. def id(self):
  132. return self.user['id']
  133. __all__ = ['User' , 'TUser']