M. Claudia tom Dieck

17 papers C 3Journal 13Unranked 1
YearRankTypeTitle / Venue / Authors
2025 J jnl
Internet Res.
M. Claudia tom Dieck, Nina Krey, Eleanor E. Cranmer
2025 J jnl
Comput. Hum. Behav.
M. Claudia tom Dieck, Dai-In Danny Han, Timothy Jung
2024 J jnl
Inf. Technol. People
M. Claudia tom Dieck, Eleanor E. Cranmer, Alexandre Prim, David Bamford
2024 J jnl
Comput. Hum. Behav.
Timothy Jung, Justin Cho, Dai-In Danny Han, Sun Joo (Grace) Ahn, Mansi Gupta, Gopal Das, Cindy Yoonjoung Heo, Sandra Maria Correia Loureiro, Marianna Sigala, Mariapina Trunfio, Alexandra Taylor, M. Claudia tom Dieck
2024 J jnl
Int. J. Mob. Commun.
M. Claudia tom Dieck, Timothy Jung, Hyunae Lee, Namho Chung
2024 J jnl
Internet Res.
Kyunghwa Hwang, M. Claudia tom Dieck, Timothy Jung, Ohbyung Kwon
2023 J jnl
Inf. Syst. Frontiers
Yogesh K. Dwivedi, Nir Kshetri, Laurie Hughes, Nripendra P. Rana, Abdullah M. Baabdullah, Arpan Kumar Kar, Alex Koohang, Samuel Ribeiro-Navarrete, Nina Belei, Janarthanan Balakrishnan, Sriparna Basu, Abhishek Behl, Gareth H. Davies, Vincent Dutot, Rohita Dwivedi, Leighton Evans, Reto Felix, Richard Foster-Fletcher, Mihalis Giannakis, Ashish Gupta, Chris Hinsch, Animesh Jain, Nina Jane Patel, Timothy Jung, Satinder Juneja, Qeis Kamran, Sanjar Mohamed AB, Neeraj Pandey, Savvas Papagiannidis, Ramakrishnan Raman, Philipp A. Rauschnabel, Preeti Tak, Alexandra Taylor, M. Claudia tom Dieck, Giampaolo Viglia, Yichuan Wang, Meiyi Yan
2021 J jnl
Inf. Manag.
Eleanor E. Cranmer, Cathy Urquhart, M. Claudia tom Dieck, Timothy Jung
2020 J jnl
Inf. Manag.
Hyunae Lee, Timothy Hyungsoo Jung, M. Claudia tom Dieck, Namho Chung
2020 J jnl
Int. J. Hum. Comput. Interact.
Timothy Jung, M. Claudia tom Dieck, Hyunae Lee, Namho Chung
2019 J jnl
Int. J. Hum. Comput. Interact.
Dai-In Han, Timothy Jung, M. Claudia tom Dieck
2018 J jnl
Comput. Hum. Behav.
M. Claudia tom Dieck, Timothy Hyungsoo Jung, Philipp A. Rauschnabel
2017 J jnl
Comput. Hum. Behav.
Philipp A. Rauschnabel, Alexander Rossmann, M. Claudia tom Dieck
2017 conf
DEC
Philipp A. Rauschnabel, M. Claudia tom Dieck, Alexander Rossmann
2017 C conf
ICCE
Timothy Jung, M. Claudia tom Dieck, Natasha Moorhouse, Dario tom Dieck
2016 C conf
ENTER
Timothy Jung, M. Claudia tom Dieck, Hyunae Lee, Namho Chung
2016 C conf
ENTER
Eleanor E. Cranmer, Timothy Jung, M. Claudia tom Dieck, Amanda Miller
redb/extractors/decompiler/bninja/similarity/minhashcustom.py
← Index redb/extractors/decompiler/bninja/similarity/minhashcustom.py python
import numpy as np
import mmh3

class MinHashCustom:
    """
    DTO for an actual MinHash
    <minhash>: a binary sequence of packed int8/32 values
    <minhash_int>: the equivalent representation of <minhash> but as list of int8/32
    """

    _HASH_MAX = 0xFFFFFFFF
    _MINHASH_BITS = 32

    def getSignatureEntrySize(self):
        return 1 if self.MINHASH_BITS <= 8 else 4

    def __init__(self, function_addr=None, minhash_bytes=None, minhash_signature=None, minhash_bits=32):
        self.minhash = b""
        self.minhash_int = []
        if minhash_bits:
            self._MINHASH_BITS = minhash_bits
        if minhash_bytes and minhash_signature:
            raise ValueError("Can use only one keyword argument")
        if minhash_bytes:
            if self._MINHASH_BITS <= 8:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint8)
            else:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint32)
            self.setMinHash(minhash_signature)
        elif minhash_signature:
            self.setMinHash(minhash_signature)

        self.shingler_composition = {}
        self.function_addr = function_addr

    def hasMinHash(self):
        return len(self.minhash) > 0

    def getMinHash(self):
        return self.minhash

    def getMinHashInt(self):
        return self.minhash_int

    def setMinHash(self, minhash_signature):
        self.minhash_int = [i % 2 ** self._MINHASH_BITS for i in minhash_signature]
        if self._MINHASH_BITS <= 8:
            self.minhash = np.array(self.minhash_int, dtype=np.uint8).tobytes()
        else:
            self.minhash = np.array(self.minhash_int, dtype=np.uint32).tobytes()

    def getComposition(self):
        return self.shingler_composition

    def scoreAgainst(self, other):
        return self.calculateMinHashScore(self.minhash, other.minhash, minhash_bits=self._MINHASH_BITS)

    @staticmethod
    def getHashMax():
        return MinHashCustom._HASH_MAX

    @staticmethod
    def hashData(data, seed) -> int:
        if isinstance(data, (str, bytes, bytearray)):
            return mmh3.hash(data, seed) & MinHashCustom._HASH_MAX
        elif isinstance(data, (list, tuple)):
            to_hash = "|".join(str(elem) for elem in data)
            return mmh3.hash(to_hash, seed) & MinHashCustom._HASH_MAX
        else:
            raise NotImplementedError(
                f"Type not supported for hashData: {type(data).__name__}"
            )

    @staticmethod
    def calculateMinHashScore(first, second, minhash_bits=32):
        if minhash_bits <= 8:
            first_np = np.frombuffer(first, dtype=np.uint8)
            second_np = np.frombuffer(second, dtype=np.uint8)
        else:
            first_np = np.frombuffer(first, dtype=np.uint32)
            second_np = np.frombuffer(second, dtype=np.uint32)
        return 100.0 * sum(first_np == second_np) / len(first_np)

    @staticmethod
    def calculateMinHashIntScore(first, second):
        score = 0
        num_hashes = len(first)
        if num_hashes:
            for index, part in enumerate(first):
                score += 1 if part == second[index] else 0
            return 100.0 * score / num_hashes
        return 0.0

    @property
    def MINHASH_BITS(self):
        return self._MINHASH_BITS